Утилита SQL Server BCP неправильно импортирует данные - PullRequest
0 голосов
/ 17 сентября 2018

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

Вот копия:

CREATE TABLE [dbo].[test_temptable]
(
    --[ID] [int] IDENTITY(1,1) NOT NULL,
    [Column1] [varchar](100) NULL,
    [Column2] [varchar](100) NULL,
    [Column3] [varchar](100) NULL,

    /*PRIMARY KEY CLUSTERED ([ID] ASC)
*/
) 
ON [PRIMARY]
GO

Тестовые данные в inputData.csv файле:

value1,"test,test",value3

Когда я запускаю команду bcp, она работает

bcp "testDB.dbo.test_temptable" in  c:\temp\test\inputData.csv -c -t,  -T -S "testDBServer" -e c:\temp\test\error.csv

1 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total     : 1      Average : (1000.00 rows per sec.)

Однако данные в таблице неверны:

enter image description here

Столбец2 должен был test, test и столбец 3 value3 .

Что я делаю не так?Есть указатели?Спасибо всем.

1 Ответ

0 голосов
/ 17 сентября 2018

Короче говоря ... он не будет работать с запятыми в ваших данных и в качестве разделителя. Хотя Excel справляется с этим, SQL BCP не так дружелюбен:

sql server Массовая вставка CSV с данными, имеющими запятую

Раньше мне приходилось делать это, и у вас есть несколько вариантов:

  • Откройте файл .csv в Excel, сохраните его как файл с разделителями табуляции (что делает его .txt), затем вы можете запустить его, чтобы указать, что вы сейчас используете tab в качестве разделитель:

    bcp "testDB.dbo.test_temptable" in c:\temp\test\inputData.csv -c -t"\t" -T -S "testDBServer" -e c:\temp\test\error.csv

    Конечно, если у вас есть вкладка в ваших данных .. та же проблема. Однако, используя небольшой пример, который вы предоставили, работает .

  • Вы можете попробовать использовать BULK INSERT изнутри SQL

  • Вы можете использовать SSIS или DTX, но, честно говоря, я стараюсь держаться подальше от этих дополнительных накладных расходов / сложности.
...