wie Sie angeben, Zeile Trennzeichen bei Verwendung von bcp-format-Datei

Ich bin mit bcp Dienstprogramm zum importieren von Daten in Sybase Datenbank auf Solaris system

Da die bcp-Datei generiert wird, die von anderen xml-parsing Skript, ich habe keine Kontrolle über diese zu machen, erzeugen die Felder in der Reihenfolge, die ich möchte. Und nun die Reihenfolge der Felder in der bcp-Datei ist ein wenig anders mit der Reihenfolge in der Datenbank-Tabelle.

Möchte ich verwenden Sie eine format-Datei fuer bcp-tool zur Steuerung der Reihenfolge der Felder in die Datenbank geladen, so habe ich die Probe bcp-Datei wie unten und konstruiert eine Datei im format entsprechend:

die bcp-Datei:

603289|Aug 20 2011 12:00AM|YYY aaa OVD|KLYYP8
603284|Aug 22 2011 12:00AM|XXX bbb OVD|KLPK06

format " file:

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 geblieben bin auf den folgenden Fehler:

$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, dass die Ursache für den Fehler ist das bcp-Dienstprogramm nicht erkennen kann, das Zeilen-Trennzeichen ist '\n' - Zeichen (die ich verwendet habe od -c test.bcp um dies zu überprüfen), obwohl die -r\\n option im Befehl scheint nicht zu arbeiten, sollte die Angabe der Zeilen-Trennzeichen wie '\n' - Zeichen.

Hat jemand eine Ahnung?

Edit:

Habe ich eine änderung am format der Datei, und es funktioniert jetzt, ich habe die Feld-Trennzeichen für das Letzte Feld von '|' bis '\n' wie folgt:

den neue - format-Datei:

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

Als Michael erwähnt in den Kommentaren, ist es schwierig, um format-Dateien. Bei der Verwendung von original-format-Datei, die ich versucht habe zu add '|' am Ende der einzelnen Datensätze, obwohl die Datei wurden nicht korrekt verarbeitet.

Nun kann die Datei korrekt verarbeitet werden, obwohl ich nicht sicher bin, was wird als Zeilentrennzeichen durch das bcp-Dienstprogramm

- format-Dateien sind schwierig. Wenn möglich, würde ich versuchen, um die bcp-Datei neu angeordnet oder neu erstellen der Tabelle entsprechen der Reihenfolge der Spalten.
Alternativ können Sie erstellen eine temporäre Tabelle mit Spalten, die in der BCP-Datei, um - bcp in die temp-Tabelle, und wählen Sie dann aus dem temp-Tabelle in Ihrer Produktion Tabelle.
Ich bin damit einverstanden, Neuerstellung der Tabelle oder mithilfe einer temp-Tabelle oder-Sicht ist meine Letzte Möglichkeit:)
Sie können nicht von BCP in eine Sicht, also eine Sicht funktioniert nur, wenn Sie wollen, BCP Daten aus der Tabelle in das korrekte format, so wird es leichter sein, um BCP, sobald die Tabelle neu aufgebaut wird.
Danke, du hast Recht, ich dachte(fälschlicherweise) die "bcp in" was getan werden kann, ich habe in der Sybase-doc und es ist, was Sie sagte, bcp aus einer Sicht ist OK und bcp in ein view ist nicht

InformationsquelleAutor poiu2000 | 2013-05-22

Schreibe einen Kommentar