批量插入数据类型在datetime中不匹配

时间:2012-09-08 07:17:17

标签: sql sql-server bulkinsert

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

  

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

批量插入代码: -

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

1 个答案:

答案 0 :(得分: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.