2

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

谁能帮帮我吗?

脚本

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

威廉·亚历山大 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           ""

错误:

消息 4864,级别 16,状态 1,第 2 行第 1 行第 3 列 (DOB) 的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。

消息 4832,级别 16,状态 1,第 2 行批量加载:在数据文件中遇到意外的文件结尾。

Msg 7399, Level 16, State 1, Line 2 The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error.

Msg 7330, Level 16, State 2, Line 2 Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".

4

1 回答 1

2

Try this one -

--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')
于 2013-04-11T07:02:14.470 回答