使用BULK INSERT插入日期

时间:2010-11-10 14:37:25

标签: sql sql-server parsing date

我有一个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).

所以我假设这是因为我的日期格式无效。使用的正确格式是什么?

修改

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

2 个答案:

答案 0 :(得分:6)

你的日期周围有引号(')。删除它们,它应该工作。

答案 1 :(得分:0)

您的数据文件是否有标头记录?如果是这样,显然您的表名称将不是正确的数据类型,并且当SQL Server尝试将它们插入表中时将失败。试试这个:

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

根据MSDN,BULK INSERT操作在技术上不支持在CSV文件中跳过标题记录。您可以删除标题记录或尝试上述操作。我目前没有SQL Server在我面前,所以我还没有确认这是有效的。 YMMV。