0

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

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

批量插入代码:-

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

1 回答 1

2

好吧,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

SQL Fiddle 的示例。

于 2012-09-08T11:04:37.407 回答