2015-09-02 3 views
0

У меня есть исходный файл, в котором 90% первого поля пуст. Я хочу загрузить этот файл в таблицу SQL-сервера с помощью утилиты BCP. Когда я запускаю команду BCP, утилита BCP не может распознавать или различать записи.
В моем исходном файле есть данные, как показано ниже.

|100168|27238800000|14750505|1|273 |100168|27238800000|14750505|1|273 |100681|88392930052|37080101|1|252 |101014|6810000088|90421505|12|799 |101595|22023000000|21050510|8|780

Я используюBCP не работает, если первый столбец пуст

**bcp [DBNAME].[dbo].[TABLE1] in \\filelocation\filename -e \\filelocation\filename_Error.txt -c -t | -S ServerName -T -h TABLOCK -m 1** 


Я получаю сообщение об ошибке в error.txt

, как # @ Ряд 1, Колонка 28: строковые данные, право усечение @ # 100168 27238800000 14750505 1 273
100168 | 27238800000 | 14750505 | 1 | 273. Здесь BCP не может распознать записи . Из-за этого BCP пытается загрузить следующие данные записи в последнее поле , которое вызывает усечение данных.

Таблица схемы является

CREATE TABLE [DBO].[TABLE1]( 
FLD1 VARCHAR(10) 
,FLD2 VARCHAR(10) 
,FLD3 VARCHAR(22) 
,FLD4 VARCHAR(15) 
,FLD5 VARCHAR(10) 
,FLD6 VARCHAR(12)) 

ответ

1

Вы должны процитировать трубу. Труба (символ |) используется для перенаправления стандартного вывода для командных строк

Следующая упрощенная линия работает с образцом

bcp.exe [db].dbo.[table1] in "path\Data.dat" -S".\instance" -T -c -t"|"

Я опустил предел ошибки -m, журнал -e и таблицы блокировки подсказки -h, но они не должны влиять на импорт, но если у вас все еще есть проблема, попробуйте указать такие параметры, как имя сервера и имена файлов

Я использовал текстовый файл со стандартными терминаторами \r\n как expec ted by -c

Смежные вопросы