Ein Wechsel der Kollatierung einer Datenbank erfordert den Neuaufbau der Datenbank. Kollatierungen werden zum Zeitpunkt der Datenbankerstellung gewählt und können nicht geändert werden.
Ermitteln Sie folgendermaßen den Zeichensatz bei der bestehenden Datenbank:
SELECT DB_PROPERTY( 'CharSet' ); |
Bei frühen Versionen von SQL Anywhere ist diese Eigenschaft möglicherweise nicht vorhanden. Der Zeichensatz ist aus dem Kollatierungsnamen ableitbar. Beispiel: Kollatierung 1252LATIN1 verwendet Codepage 1252.
Ermitteln Sie den Zeichensatz für die Daten in der bestehenden Datenbank.
Dies sollte derselbe wie der oder kompatibel mit dem Zeichensatz der Datenbank sein. Wenn dies nicht der Fall ist, ist es ein hervorragender Grund, die Datenbank neu aufzusetzen, was allerdings mit größter Umsicht geschehen sollte.
Inbesondere wenn Sie eine Datenbank mit Kollatierung 850LATIN1 mit früheren Versionen von SQL Anywhere verwendet haben, die entweder keine Zeichensatzkonvertierung unterstützen (Version 5 und früher) oder sie standardmäßig deaktiviert haben (Versionen 6 und 7), und Ihre Clientanwendungen normale Windows-Anwendungen waren, dann haben Sie möglicherweise Codepage 1252-Zeichendaten in Ihrer Datenbank, die erwartet, dass Daten in Codepage 850 formatiert sind. Ein einfacher Test in diesem Fall ist es, UNLOAD TABLE mit der Option ENCODING zu verwenden, um einige Zeichendaten zu entladen und sie im Windows-Notepad anzuzeigen. Wenn Daten mit Akzenten korrekt angezeigt werden, entsprechen die Zeichendaten in der Datenbank der Windows ANSI-Codepage, die für Englisch und andere westeuropäische Sprachen Codepage 1252 ist. Wenn die Daten korrekt in einem DOS-basierten Editor angezeigt werden, entsprechen die Daten der Windows OEM-Codepage, die wahrscheinlich 437 oder 850 ist.
Entladen Sie die Datenbank.
Wenn der Datenzeichensatz mit dem Datenbank-Zeichensatz inkompatibel ist, ist es entscheidend, dass die Daten ohne Zeichensatzkonvertierung entladen werden. Abhängig von der verwendeten Version von SQL Anywhere können Sie die interne Entladefunktion von 'dbunload' verwenden, oder die Daten unter Verwendung der UNLOAD TABLE-Anweisung manuell entladen.
Erstellen Sie die neue Datenbank unter Angabe der Kollatierungen und Zeichensätze, die Sie verwenden wollen.
Laden Sie die Daten in die neue Datenbank.
Wenn die entladenen Daten und das Schema (reload.sql) dem Zeichensatz des Computers entsprechen, der zum Neuladen verwendet wird, können Sie die externe Neuladefunktion von dbunload verwenden. Die Daten werden automatisch in den korrekten Datensatz für die Datenbank konvertiert.
Wenn die Kodierung der Daten nicht dem Zeichensatz der Datenbank entspricht und Sie Daten mithilfe von LOAD TABLE-Anweisungen laden (internes Neuladen), müssen Sie die ENCODING-Klausel verwenden, weil der Datenbankserver standardmäßig keine Zeichensatzkonvertierung bei Daten durchführt, die mit LOAD TABLE-Anweisungen geladen werden.
Wenn die Kodierung der Daten nicht der Codepage auf dem Computer entspricht, mit dem Sie arbeiten, und Sie mithife von INPUT-Anweisungen laden (externes Neuladen), müssen Sie die ENCODING-Klausel verwenden, weil der Datenbankserver sonst annimmt, dass die Daten im systemeigenen Zeichensatz des Computers vorliegen.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |