Вставка дат с помощью BULK INSERT - PullRequest
0 голосов
/ 10 ноября 2010

У меня есть CSV-файл, который содержит три даты:

    '2010-07-01','2010-08-05','2010-09-04'

Когда я пытаюсь массово вставить их ...

    BULK INSERT [dbo].[STUDY]
        FROM 'StudyTable.csv' 
        WITH 
        ( 
            MAXERRORS = 0,
            FIELDTERMINATOR = ',',
            ROWTERMINATOR = '\n'
        )

Я получаю ошибку:

    Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 1 (CREATED_ON).

Итак, я предполагаю, что это потому, что у меня неверный формат даты. Какой правильный формат использовать?

EDIT

    CREATE TABLE [dbo].[STUDY]
    (
        [CREATED_ON] DATE,
        [COMPLETED_ON] DATE,
        [AUTHORIZED_ON] DATE,
    }

Ответы [ 2 ]

6 голосов
/ 10 ноября 2010

У вас есть кавычки (') вокруг ваших дат. Удалите их, и это должно сработать.

0 голосов
/ 10 ноября 2010

Есть ли в вашем файле данных запись заголовка? Если это произойдет, очевидно, что имена ваших таблиц не будут иметь правильный тип данных, и произойдет сбой, когда SQL Server попытается вставить их в вашу таблицу. Попробуйте это:

BULK INSERT [dbo].[STUDY]
    FROM 'StudyTable.csv' 
    WITH 
    ( 
        MAXERRORS = 0,
        FIELDTERMINATOR = ',',
        ROWTERMINATOR = '\n',
        FIRSTROW = 2
    )

Согласно MSDN операция BULK INSERT технически не поддерживает пропуск записей заголовка в файле CSV. Вы можете удалить запись заголовка или попробовать выше. В настоящий момент у меня нет SQL Server, поэтому я не подтвердил, что это работает. YMMV.

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