我正在尝试在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)"。
答案 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')