0

我正在尝试在 SQL Server 2008 中使用 BULK INSERT 来导入 TSV(制表符分隔值)文件。

这是我的脚本:

USE ABC
GO

CREATE TABLE CSVTest
(ID INT,
FirstName VARCHAR(40),
LastName VARCHAR(40),
TodaysDate DATETIME)
GO

BULK
INSERT CSVTest
FROM 'd:\csvtest.txt'
WITH
(
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n'
)
GO

--Check the content of the table.
SELECT *
FROM CSVTest
GO

--Drop the table to clean up database.
SELECT *
FROM CSVTest
GO

DROP TABLE CSVTest
GO

这是文件的内容d:\csvtest.txt

1 詹姆斯·史密斯 16/10/2010 04:45:35
2 梅吉·史密斯 16/10/2010 04:45:35
3 罗伯特·史密斯 16/10/2010 04:45:35
4 亚历克斯·史密斯 16/10/2010 04:45:35

不幸的是,我收到以下错误:

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

显然,我需要将 TSV 文件中的日期格式转换为DATETIME.

有人可以帮帮我吗?

4

1 回答 1

5

我想知道这是否与它首先预期几个月有关,而不是日期格式为 2010 年 16 月 10 日的天数(即预期 2010 年 10 月 16 日)。您可以在 BULK INSERT 之前尝试这样做:

SET DATEFORMAT dmy;
于 2010-10-16T15:18:23.880 回答