Импорт файлов CSV с использованием BCP на Azure SQL Сервер - PullRequest
0 голосов
/ 21 января 2020

Моя команда BCP выглядит следующим образом:

BCP azuredatabase.dbo.rawdata IN "clientPathToCSVFile" -S servername -U user@servername -P pw -c -t,-r\n

Мой CSV-файл имеет формат {cr} {lf}.

Мой CSV выглядит следующим образом

125180896918,20,9,57.28,2020-01-04 23:02:21,282992,1327,4,2850280,49552
125180896919,20,10,57.82,2020-01-04 23:02:21,282992,1298,4,2850280,48881
125180896920,16,11,58.20,2020-01-04 23:02:21,282992,1065,4,2850280,48612
125180896921,20,12,69.10,2020-01-04 23:02:21,282992,515,4,2850280,10032
125180896922,20,13,70.47,2020-01-04 23:02:21,282992,1280,4,2850280,48766
125180896923,1,1,105.04,2020-01-04 23:02:21,,1296,4,2969398,49161

Как видите, есть также пустые поля.

Мой вывод выглядит так

Starting copy...

0 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total     : 547

Так как мне правильно настроить мою команду для BCP?

1 Ответ

1 голос
/ 21 января 2020

Вы указали, что ваши данные в формате CRLF (что означает \ r \ n). Но вашей команде bcp сказано искать терминатор строки в \ n (используя опцию -r).

Я бы ожидал увидеть первую половину вашего фактического конца строки CRLF в "\ r \ n" msgstr "разделить пополам так, чтобы \ r был включен в ваш последний столбец, а \ n был найден как терминатор строки, но похоже, что BCP не загружал строки, потому что не нашел \ n в вашем файле.

Я мало работал с Azure / BCP, поэтому, возможно, кто-то еще знает, как BCP для Azure справится с этим, но серверная версия BCP SQL все равно найдет ваш \ n и затем загрузит \ r в ваш последний столбец .

Либо тот, либо ваш терминатор строки теперь тот, кем вы думаете. Вы просматривали файл с помощью текстового редактора (не блокнота, не WordPad ... что-то, что будет показывать скрытые символы, такие как терминаторы строк и табуляции и т. Д.).

Обычно, когда BCP не загружает строки (и есть строк в файле для загрузки), это может быть путаница с ограничителями строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...