【问题标题】:Inserting Dates with BULK INSERT使用 BULK INSERT 插入日期
【发布时间】:2025-11-25 22:45:02
【问题描述】:

我有一个 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,
    }

【问题讨论】:

  • 您的表格字段的数据类型是什么?

标签: sql sql-server parsing date


【解决方案1】:

日期前后有引号 (')。删除它们,它应该可以工作。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 不,没有标题。原来有,(从 OpenOffice 的 Excel 版本中导出)但我手动删除了它们。