Samstag, 13. August 2011

SQL*Loader und die Zeichensatzkonvertierung mit gVim

Heute wollen wir eine, mit latin1 kodierte, Datei mithilfe von SQL*Loader in einer Datenbank, die mit UTF-8 arbeitet, bereitstellen. Die Datei mit dem Namen mitarbeiter.data enthält die folgenden Zeilen:
ID,VORNAME,NACHNAME
1,Karl,Müller
2,Céline,Dupont
3,Henry,Weiß
Dazu bietet gVim eine einfache Möglichkeit an, die latin1 kodierte Datei UTF-8 kompatibel zu speichern. Nach dem Öffnen der Datei kann man sich diese zum einen in einer anderen Kodierung anzeigen lassen und zum anderen in einer anderen Kodierung abspeichern.

Um sich die aktuelle Kodierung, auf der die Darstellung beruht, anzeigen zu lassen genügt der folgende Befehl:
:set enc
Öffnet man die Datei mit gVim erhält man in diesem Beispiel:


Zum einen kann man sich nun die Datei UTF-8 kodiert anzeigen lassen; das geht mit dem Befehl:
:set enc=utf8
Anmerkung: dies ändert nur die Anzeige. Man erhält dann:


Nun speichern wir die Datei UTF-8 kodiert mit dem Befehl:
:w ++enc=utf8
Kommen wir nun zu SQL*Loader und dem entsprechendem Control File:
OPTIONS(SKIP = 1, DIRECT = TRUE)
LOAD DATA
INFILE 'mitarbeiter.data'
BADFILE 'mitarbeiter.bad'
DISCARDFILE 'mitarbeiter.dsc'
TRUNCATE
INTO TABLE mitarbeiter
FIELDS TERMINATED BY ","
(
 id integer external,
 vorname char,
 nachname char
)
Nachdem man in der Konsole die Umgebungsvariable NLS_LANG angepasst hat erhält man den folgenden Output:
D:\Oracle\blog_posting>set NLS_LANG = GERMAN_GERMANY.UTF8

D:\Oracle\blog_posting>sqlldr user@tns control=mitarbeiter.ctl
Kennwort:

SQL*Loader: Release 11.2.0.1.0 - Production on Sa Aug 13 21:44:18 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Ladevorgang beendet
Jetzt betrachten wir den Inhalt der Tabelle mitarbeiter und erhalten:


Anmerkung: die Umgebungsvariable NLS_LANG wurde zuvor auf GERMAN_GERMANY.WE8PC850 gesetzt.

Damit sind wir am Ende vom Post angelangt. Insbesondere die interaktive Ansicht der Datei in verschiedenen Kodierungen erscheint mir ein besonders nützliches Feature von gVim, das mir bis dato unbekannt war.

Keine Kommentare:

Kommentar veröffentlichen