批量插入日期时间错误

时间:2013-04-11 00:52:15

标签: sql-server sql-server-2012 bulkinsert

我正在尝试在SQL Server 2012中使用BULK INSERT将数据从文本文件导入数据库表。我在文本文件中使用UTC日期时间值和Z指示符(DOB字段)。但是在执行BULK INSERT时,我收到了#34;数据转换错误"。

有人可以帮助我吗?

脚本

CREATE TABLE Info
(
FirstName VARCHAR(40),
LastName VARCHAR(40),
DOB DATETIME
)

BULK INSERT Info FROM 'F:\InfoTextFile.txt'  WITH (FORMATFILE='F:\InfoFormatFile.fmt')

F:\ InfoTextFile.txt

的内容
  

约翰史密斯1988-08-23T00:00:00.0Z

     

William Alexander 1987-07-22T00:00:00.0Z

' F:\ InfoFormatFile.fmt'

的内容
11.0

3

1     SQLCHAR     0     10     ""     1     FirstName     ""

2     SQLCHAR     0     10     ""     2     LastName      ""

3     SQLDATETIME 0 22     "\r\n" 3     DOB           ""

错误:

  

Msg 4864,Level 16,State 1,Line 2批量加载数据转换错误   (为指定的代码页键入不匹配或无效字符)   第1行第3列(DOB)。

     

Msg 4832,Level 16,State 1,Line 2批量加载:意外结束   文件在数据文件中遇到。

     

Msg 7399,Level 16,State 1,Line 2 OLE DB提供者" BULK"对于   链接服务器"(null)"报告错误。提供者没有给出   有关错误的任何信息。

     

消息7330,级别16,状态2,行2无法从OLE DB中获取行   提供者" BULK"对于链接服务器"(null)"。

1 个答案:

答案 0 :(得分:2)

试试这个 -

--C:\InfoTextFile.txt ->
--John Smith 1988-08-23T00:00:00.0Z
--William Alexander 1987-07-22T00:00:00.0Z

--C:\InfoFormatFile.fmt ->
--11.0
--3
--1     SQLCHAR     0     10     " "     1     FirstName     ""
--2     SQLCHAR     0     10     " "     2     LastName      ""
--3     SQLCHAR     0     22     "\n"    3     DOB           ""

BULK INSERT Info 
FROM 'C:\InfoTextFile.txt' 
WITH (FIELDTERMINATOR = ' ', ROWTERMINATOR = '\n', FORMATFILE='C:\InfoFormatFile.fmt')