Festlegen des Zeilentrennzeichens bei Verwendung von bcp mit einer Formatdatei
ich benutzebcp
Dienstprogramm zum Importieren von Daten inSybase
Datenbank aufSolaris
System
Da die BCP-Datei von einem anderen XML-Parsing-Skript generiert wird, kann ich nicht steuern, ob die Felder in der von mir gewünschten Reihenfolge generiert werden. Und jetzt unterscheidet sich die Reihenfolge der Felder in der BCP-Datei ein wenig von der Reihenfolge in der Datenbanktabelle.
Ich möchte eine Formatdatei für das bcp-Tool verwenden, um die Reihenfolge der in die Datenbank geladenen Felder zu steuern. Daher habe ich die folgende Beispiel-bcp-Datei und habe eine entsprechende Formatdatei erstellt:
Die BCP-Datei:
603289|Aug 20 2011 12:00AM|YYY aaa OVD|KLYYP8
603284|Aug 22 2011 12:00AM|XXX bbb OVD|KLPK06
die Formatdatei:
10.0
4
1 SYBCHAR 0 12 "|" 3 ver
2 SYBCHAR 0 26 "|" 2 first_dt
3 SYBCHAR 0 60 "|" 4 name1
4 SYBCHAR 0 10 "|" 1 name2
Obwohl ich bei folgendem Fehler festgefahren bin:
$bcp my_db..my_tbl in test.bcp -e error -f format.fmt -r\\n -S Sever -U user -P pw
Starting copy...
CSLIB Message: - L0/O0/S0/N24/1/0:
cs_convert: cslib user api layer: common library error: The conversion/operation was stopped due to a syntax error in the source field.
Unexpected EOF encountered in BCP data-file.
bcp copy in partially failed
1 rows copied.
Ich vermute, die Ursache für den Fehler liegt darin, dass das Dienstprogramm bcp den Zeilentrenner mit dem Zeichen '\ n' (den ich verwendet habe) nicht erkenntod -c test.bcp
um dies zu überprüfen), obwohl die-r\\n
Die Option im Befehl scheint nicht zu funktionieren, daher sollte der Zeilentrenner das Zeichen '\ n' sein.
Hat jemand eine Ahnung?
Bearbeiten:
Ich habe die Formatdatei geändert und sie funktioniert jetzt einwandfrei. Ich habe das Feldtrennzeichen für das letzte Feld von '|' zu '\ n' wie folgt:
dasNeu Formatdatei:
10.0
4
1 SYBCHAR 0 12 "|" 3 ver
2 SYBCHAR 0 26 "|" 2 first_dt
3 SYBCHAR 0 60 "|" 4 name1
4 SYBCHAR 0 10 "\n" 1 name2
Wie Michael in Kommentaren erwähnt hat, ist es schwierig, Formatdateien zu verwenden. Bei Verwendung der Originalformatdatei habe ich versucht, '|' am Ende jedes Datensatzes, obwohl die Datei nicht richtig verarbeitet wurden.
Jetzt kann die Datei korrekt verarbeitet werden, obwohl ich nicht sicher bin, was vom Dienstprogramm bcp als Zeilentrennzeichen verwendet wird