Массовая вставка SQL Server 2012 из CSV во временную таблицу - PullRequest
0 голосов
/ 10 октября 2018

Как видно из названия, я пытаюсь вставить CSV во временную таблицу.К сожалению, я сталкиваюсь с ошибками.

Вот запрос:

USE DATABASE5000

CREATE TABLE #tempTable1
(
    ID INT,
    CD VARCHAR(50), 
    ESD DATETIME,
    EED DATETIME, 
    MiscDate DATETIME, 
    SQ SMALLINT
) 

BULK INSERT #tempTable1
FROM 'C:\Dir\Folder\BestFile.csv';

И вот ошибки, которые я получаю:

Сообщение 4832, Уровень 16, Состояние 1, Строка 1
Массовая загрузка: в файле данных обнаружен неожиданный конец файла.

Сообщение 7399, уровень 16, состояние 1, строка 1
Поставщик OLE DB "BULK" для связанного сервера "(пусто)"сообщил об ошибке.Поставщик не предоставил никакой информации об ошибке.

Сообщение 7330, уровень 16, состояние 2, строка 1
Невозможно извлечь строку из поставщика OLE DB "BULK" для связанного сервера "(null)".

Есть идеи?Спасибо вам.

1 Ответ

0 голосов
/ 11 октября 2018

Вы не указали FIELDTERMINATOR.Значение по умолчанию на самом деле tab.Пожалуйста, обратитесь к BULK INSERT документации.

BULK INSERT #tempTable1
FROM 'C:\Dir\Folder\BestFile.csv'
WITH
(
    FIELDTERMINATOR = ','           -- add this
);

Согласно документации, существует FORMAT = CSV

WITH (FORMAT = 'CSV')

Вы можете попробовать это.Я сделал быстрый тест, есть некоторые ограничения, которые, кажется, не поддерживают строку с двойной кавычкой

...