Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 (Deutsch) » SQL Anywhere Server - Datenbankadministration » Datenbankkonfiguration » Internationale Sprachen und Zeichensätze » Aufgaben zu internationalen Sprachen und Zeichensätzen

 

Kollatierung für eine Datenbank ändern

 Ändern von Kollatierungen

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.

  1. Starten Sie die Datenbank.

    START databasefile 
  2. 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.

    Der Zeichensatz in der vorhandenen Datenbank muss mit dem Zeichensatz der Datenbank übereinstimmen oder zumindest kompatibel 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 gilt: Wenn Sie eine Datenbank mit Kollatierung 850LATIN1 in früheren Versionen von SQL Anywhere verwendet haben, die die Zeichensatzkonvertierung entweder nicht unterstützen (Version 5 und früher) oder standardmäßig deaktiviert haben (Versionen 6 und 7), und Ihre Clientanwendungen normale Windows-Anwendungen waren, haben Sie möglicherweise Codepage 1252-Zeichendaten in Ihrer Datenbank, die Codepage 850-Daten erwartet.

  3. Ermitteln Sie den Zeichensatz für die Daten in der vorhandenen Datenbank wie folgt:

    UNLOAD TABLE mytable TO 'mytable_data_in_utf8.dat' ENCODING 'UTF-8';

    Zeigen Sie die Ergebnisse im Windows-Editor an.

    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.

  4. Entladen Sie die Datenbank wie folgt:

    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.

  5. Erstellen Sie die neue Datenbank wie folgt, unter Angabe der zu verwendenden Kollatierungen und Zeichensätze:

    dbinit -z 1252LATIN1 c:\newdatabase.db 
  6. Stoppen Sie den alten Datenbankserver und starten Sie den neuen Datenbankserver:

    dbeng12 -n new-server c:\newdatabase.db 
  7. 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.

    dbunload -ix c:\databasefile

    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.

 Siehe auch