как указать разделитель строк при использовании bcp с файлом формата
Я используюbcp
утилита для импорта данных вSybase
база данных наSolaris
система
Поскольку bcp-файл генерируется другим XML-скриптом, я не могу управлять им, чтобы он генерировал поля в нужном мне порядке. И теперь порядок полей в файле bcp немного отличается от порядка в таблице базы данных.
Я хочу использовать файл формата для инструмента bcp, чтобы контролировать порядок полей, загружаемых в базу данных, поэтому у меня есть пример файла bcp, как показано ниже, и соответственно создан файл форматирования:
BCP-файл:
603289|Aug 20 2011 12:00AM|YYY aaa OVD|KLYYP8
603284|Aug 22 2011 12:00AM|XXX bbb OVD|KLPK06
формат файла:
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
Хотя я застрял на следующей ошибке:
$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.
Я подозреваю, что причина ошибки заключается в том, что утилита bcp не может распознать разделитель строк, который является символом '\ n' (я использовалod -c test.bcp
чтобы проверить это), хотя-r\\n
Опция в команде, кажется, не работает, которая должна указывать разделитель строк как символ '\ n'.
У кого-нибудь есть ключ?
Редактировать:
Я изменил формат файла, и теперь он работает нормально, я изменил разделитель полей для последнего поля с '|' на \ n, как показано ниже:
новый формат файла:
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
Как Майкл упомянул в комментариях, сложно использовать форматные файлы. При использовании файла оригинального формата я попытался добавить '|' в конце каждой записи, хотя файл не был обработан правильно.
Теперь файл может быть обработан правильно, хотя я не уверен, что утилита bcp использует в качестве разделителя строк