我在StackOverflow上找到了关于这个主题的一些帖子,但似乎都没有解决我的问题。
我正在尝试为SQL Server 2008 Express设置批量导入,但无法导入datetime
值。这个问题看起来很基本,我必须错过一些非常简单的事情,我希望别人能解决这个问题。
我正在导入此表:
CREATE TABLE [dbo].[BulkTest](
[ReportDate] [datetime] NOT NULL
)
这是我的格式文件(BulkTest.fmt):
10.0
1
1 SQLDATETIME 0 0 "\r\n" 1 ReportDate ""
这是导入的数据(BulkTest.tab):
ReportDate
2010-12-31
2011-01-31
这是导入声明:
BULK INSERT dbo.BulkTest
FROM 'Q:\...\BulkTest.tab'
WITH (
CHECK_CONSTRAINTS,
TABLOCK,
FORMATFILE='Q:\...\BulkTest.fmt',
FIRSTROW=1,
DATAFILETYPE='char'
);
这些是错误:
Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 1 (ReportDate).
Msg 4864, Level 16, State 1, Line 1
Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 2, column 1 (ReportDate).
Msg 4832, Level 16, State 1, Line 1
12/31/2010
,31/12/2010
,20101231
,2010-12-31 00:00:00
以及其他各种格式。DATAFILETYPE
,TABLOCK
,CHECK_CONSTRAINTS
。SET DATEFORMAT ymd
。有什么想法吗?
答案 0 :(得分:0)
这是我的代码中的格式:
08/17/2000 16:32:32
生产者恰好是.NET,ToString(DateTimeFormatInfo.InvariantInfo)
。
答案 1 :(得分:0)
为什么需要格式文件呢?你不使用它会发生什么?
BULK INSERT dbo.BulkTest
FROM 'Q:\...\BulkTest.tab'
WITH (
CHECK_CONSTRAINTS,
TABLOCK,
FIRSTROW=1,
DATAFILETYPE='char',
ROWTERMINATOR='\r\n'
);
答案 2 :(得分:0)
对不起,我迟到了,但我希望这可以帮助其他一些可怜的人。
无论如何,我在使用格式文件时发现了同样的错误。
我没有输入 SQLDATE ,而是使用 SQLCHAR 和长度。
2015-01-01 =长度10
11.0
1
1 SQLCHAR 0 10" \ r \ n" 1 my_date""