AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken fb 2.5 von utf8 umstellen zu win1252
Thema durchsuchen
Ansicht
Themen-Optionen

fb 2.5 von utf8 umstellen zu win1252

Ein Thema von Kostas · begonnen am 6. Jul 2014 · letzter Beitrag vom 7. Jul 2014
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.233 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: fb 2.5 von utf8 umstellen zu win1252

  Alt 6. Jul 2014, 20:38
Wie kommst du genau auf 73638?
Mit 76*255*3 bin ich weit darunter.

Zitat:
Da die Access Datenbank immer wieder zum importieren verwendet wird und keine Felddefinitionen bekannt sind, ...
Wie wäre es sich die Felddefinitionen (bzw. die Bedeutung der Felder) heraus zu suchen.
Wenn du schon weißt das viele kleiner sind, lege sie halt in FB kürzer an.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: fb 2.5 von utf8 umstellen zu win1252

  Alt 7. Jul 2014, 07:17
Was spricht gegen Normalisierung?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
696 Beiträge
 
FreePascal / Lazarus
 
#3

AW: fb 2.5 von utf8 umstellen zu win1252

  Alt 7. Jul 2014, 07:42
Neben der Tatsache, das eine Umstellung der DB mit IBExpert sehr einfach geht (tools-extract metadata-alle objekte und alle daten auswählen, im resultierenden script dann einfach oben UTF8 durch win1252 ersetzen und wieder ausführen), glaube ich kaum, das beim Import von access immer 255 Zeichen lange Daten pro Spalte kommen werden, das klingt nach "Ich nehm mal 255, wird schon reichen ..". Die Feldlängen kannst du sicherlich empirisch auf das runterbrechen, was in den Importen schon drin war und ggf dafür sogar noch 100% draufpacken.

Wenn dir wirklich nichts besseres einfällt, bau dir für den Import eine Tabelle mit 76 Spalten "Blob Sub_type text". Die belegen in Bezug auf die Datensatzbreite 8 Byte pro Spalte, damit kannst du zur Not auch 5000 Spalten anlegen, wenn die sinnvolle Feldnamen einfallen, die dann nicht das 32k Limit der Metadatendefinition erreichen.

Das als Anlass zu nehmen, die Datenbank von utf8 wieder auf win1252 umzustellen, halte ich für eine "unglückliche" Entscheidung, irgendwann sind im Import 250 Spalten der Länge 500 oder was auch immer, dann kommt irgendwann das nächste Limit, welches auch immer.

Oder mach dir die Mühe, den Access kram erst mal in ein Format wie csv zu exportieren und beginne damit ...
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
Firebird 5 Update und Know-how Workshop – 28.8.-29.08.2025 64546 Mörfelden - Walldorf
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.233 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: fb 2.5 von utf8 umstellen zu win1252

  Alt 7. Jul 2014, 07:46
..., glaube ich kaum, das beim Import von access immer 255 Zeichen lange Daten pro Spalte kommen werden, das klingt nach "Ich nehm mal 255, wird schon reichen ..".
Nicht mal das. 255 ist die Defaultlänge für einen kurzen String.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.115 Beiträge
 
Delphi 12 Athens
 
#5

AW: fb 2.5 von utf8 umstellen zu win1252

  Alt 7. Jul 2014, 08:55
Neben der Tatsache, das eine Umstellung der DB mit IBExpert sehr einfach geht (tools-extract metadata-alle objekte und alle daten auswählen, im resultierenden script dann einfach oben UTF8 durch win1252 ersetzen und wieder ausführen) ...
Hallo Holger,

habe ich das richtig verstanden:
Die DB öffnen, Extract Metadate, Alle Meta Objekte, alle Tabellen, unter Optionen Extract Blobs, jetzt das script ausführen.
Es wird ein script mit Metadaten und Daten generiert. Das neue script öffnen, in allen Metadata die Vorkommnissen UTF8 durch WIN1252
ersetzen und das Script ausführen. Alle Felder incl, Memo werden von UTF8 in WIN1252 konvertiert.


Wenn die DB zu groß ist, müsste ich die Metadaten ohne Daten exportieren und die Daten separat exportieren. Würde das funktionieren?

Gruß Kostas

[Edit] So hat es leider nicht funktioniert. Die Feldinhalte sind nicht konvertiert.

Geändert von Kostas ( 7. Jul 2014 um 09:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
696 Beiträge
 
FreePascal / Lazarus
 
#6

AW: fb 2.5 von utf8 umstellen zu win1252

  Alt 7. Jul 2014, 20:43
habe ich das richtig verstanden:
Die DB öffnen, Extract Metadate, Alle Meta Objekte, alle Tabellen, unter Optionen Extract Blobs, jetzt das script ausführen.
Es wird ein script mit Metadaten und Daten generiert. Das neue script öffnen, in allen Metadata die Vorkommnissen UTF8 durch WIN1252
ersetzen und das Script ausführen. Alle Felder incl, Memo werden von UTF8 in WIN1252 konvertiert.
Wenn die DB zu groß ist, müsste ich die Metadaten ohne Daten exportieren und die Daten separat exportieren. Würde das funktionieren?
Wenn deine daten kompatibel sind, dann wir das genau so gehen. Du must ein format auswählen,bei dem auch blobs unterstützt werden
(am besten seperate files oder file) und bei den optionen alles sinnvolle einstellen
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
Firebird 5 Update und Know-how Workshop – 28.8.-29.08.2025 64546 Mörfelden - Walldorf
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.115 Beiträge
 
Delphi 12 Athens
 
#7

AW: fb 2.5 von utf8 umstellen zu win1252

  Alt 7. Jul 2014, 21:02
Danke Holger,

werde ich nochmals ausprobieren. Mein erster schneller Test hat nicht funktioniert.
Auf dem ersten Blick funktionierte es so- ob es richtig weis ich nicht:
Metadata Extract, Alle Metadaten, alle Daten, Blobs exportieren. Jetzt sehe ich das IBEBlock
script und ersetze Names=UTF8 in Names=WIN1252.
Das IBEBlock wird nun ausgeführt. Jetzt öffne ich das Script welches Metadaten und Daten enthält
und ersetze alle Vorkommnisse UTF8 durch WIN1252. Danach lasse ich auch dieses Script laufen.
Auf den ersten Blick ist die DB umgestellt und alle Feldinhalte sind sauber konvertiert.

Für meine Fall ist das nicht mehr notwendig da ich die Felder gekürzt habe und die DB ist bei UTF8 geblieben.
Dennoch ist es schön zu wissen wie es mit IBExpert funktioniert.

Danke Holger.
Dir noch eine schöne Zeit.

Gruß Kostas
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.115 Beiträge
 
Delphi 12 Athens
 
#8

AW: fb 2.5 von utf8 umstellen zu win1252

  Alt 7. Jul 2014, 08:05
Was spricht gegen Normalisierung?
Genau diesen Weg gehe ich gerade.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: fb 2.5 von utf8 umstellen zu win1252

  Alt 7. Jul 2014, 09:01
Zitat:
Ist utf8 nicht 4 Byte lang?
Nein, variabel zwischen 1 und 4. ASCI-Zeichen belegen nur 1 Zeichen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.553 Beiträge
 
Delphi 12 Athens
 
#10

AW: fb 2.5 von utf8 umstellen zu win1252

  Alt 7. Jul 2014, 13:42
Ja, aber viele DBMS machen es sich einfach mit der Speicherverwaltung und nehmen 3 oder 4 Byte pro "UTF-8"-Char, als Datenbreite für das jeweilige Feld.
1 bis 3 Byte pro Char, für den UCS-2-Bereich und der vollte Unicode-Bereich benötigt bis zu 4 Byte.

Ach ja, mit normalisieren war nicht das Charset gemeint, sondern die Tabellenstruktur,
also die vielen Spalten auf mehrere Tabellen aufteilen und Gleiches zusammenzufassen.


Warum willst du denn an dieser Stelle rumschrauben?
- Speicherplatz auf der Festplatte? (ok)
- aber dei der Übertragung sollten die DBMS doch intelligenter sein und ungenutzten Speicherplatz nicht mit übertragen
- ansonsten kann man bestimmt auch gut eine Komprimierung in den Datenverkehr einschalten, welche die leeren Bereiche quasi weglässt.
- Und außerdem kann man die Daten auch in einer anderen Codierung übertragen, als wie sie in der DB stehen? (z.B. als UTF-8 in der DB belassen und die Connection auf Win1252 umstellen)




Daten ohne Tabellenformat exportieren,
die Tabellen oder gleich die ganze Datenbank mit dem gewünschten Charset neu erstellen
und dann die Daten wieder importieren.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 7. Jul 2014 um 13:50 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz