【问题标题】:Bulk Insert Data Type Mismatch in datetime日期时间中的批量插入数据类型不匹配
【发布时间】:2012-09-08 07:17:17
【问题描述】:

在我的批量插入查询中,我将 .LST 文件中的一列设为 |12083121022612|此列的格式为"YYMMDDHHMMSSTT"dbo.ReportMain 表中,我已将此数据类型设置为datetime 它给了我错误的说法

第 1 行第 13 列 (DateAndTime) 的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。

批量插入代码:-

BULK
INSERT dbo.ReportMain
FROM 'C:\AGS_WINCORE_120901.LST'
WITH
(
FIELDTERMINATOR = '|',
ROWTERMINATOR = '0x0A'
)
GO

【问题讨论】:

    标签: sql sql-server bulkinsert


    【解决方案1】:

    好吧,12083121022612 不是有效日期:

    select cast('12083121022612' as datetime)
    -->
    Conversion failed when converting date and/or time from character string.
    

    您可以批量加载到使用varchar 字段的临时表中。您可以将varchar 字段转换为通用yyyy-MM-ddTHH:mm:ss:tt 日期格式。下面是一个示例查询,可以将暂存表中的行插入到主表中:

    insert  ReportMain
            (col1)
    select  cast('20' + substring(col1,1,2) + '-' + substring(col1,3,2) + '-' + 
                substring(col1,5,2) + 'T' + substring(col1, 7,2) + ':' + 
                substring(col1, 9,2) + ':' + substring(col1, 11,2) + 
                '.' + substring(col1, 13,2) as datetime)
    from    ReportMain_Staging
    

    Example at SQL Fiddle.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 1970-01-01
      • 2019-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多