Microsoft SQL Server не может загрузить простой файл CSV - PullRequest
0 голосов
/ 31 марта 2019

Вот как я настраиваю схему:

sqlcmd -S localhost -U <user> -P <pw> -d <relation> -Q "CREATE TABLE vehicle_reg (record_type varchar, vin varchar, registration_class varchar, city varchar, state varchar, zip int, county varchar, model_year int, make varchar, body_type varchar, fuel varchar, unladen_weight int, max_gross_weight int, passengers int, reg_valid_date date, reg_expiration_date date, color varchar, scofflaw varchar, suspension varchar, revocation varchar);"

Чтобы проверить это, мой CSV-файл содержит ровно 1 строку:

VEH ,5NMSGDAB5AH372379,PAS,ALEXANDRIA BAY ,NY,13607,JEFFERSON   ,2010,HYUND,SUBN,GAS     ,3875,,,06/26/2017,07/06/2019,WH   ,N,N,N

Вот как я запускаю команду bcp:

bcp <db> in one-line.csv -S localhost -U <user> -P <pw> -d <relation> -n -t','

Но он просто ничего не копирует:

Starting copy...

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

Если вместо этого я предоставлю полный файл CSV, я получу Error = [Microsoft][ODBC Driver 17 for SQL Server]Unexpected EOF encountered in BCP data-file.

Любые намеки?

1 Ответ

0 голосов
/ 26 апреля 2019

Если ваш файл содержит строки, оканчивающиеся на \ n, вам нужно указать BCP искать \ n в качестве разделителя строк. Это достигается с помощью опции -r. Если опция -r не включена, BCP по умолчанию будет использовать терминатор строки \ r \ n (возврат каретки и перевод строки). В вашем 1-строчном тестовом файле BCP не находит ни одной строки, оканчивающейся на \ r \ n, и поэтому ничего не загружает. Просто убедитесь, что разделители строк совпадают между тем, что находится в файле, и тем, что ищет BCP.

...