2013-05-13 152 views
3

我有一个包含1600行和82列逗号描述数据的txt文件,我试图导入到表中。在最后一个字段的每一行上,我都会收到以下错误信息:SQL Server 2005 - 批量插入失败

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

import语句是

BULK 
INSERT [ENERGY].[dbo].[READINGS1] 
     from 'c:\readings2.txt' 
with 
(
DATAFILETYPE='widechar', 
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n' 
) 
GO 

表结构如下,脚本的顶部和底部:

USE [ENERGY] 
GO 
/****** Object: Table [dbo].[READINGS1] Script Date: 05/13/2013 20:00:30 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE TABLE [dbo].[READINGS1](
[DateAndTime] [datetime] NOT NULL, 
[DB240D4C7] [float] NULL, 
[DB240D8C7] [float] NULL, 
[DB240D12C7] [float] NULL, 
[DB240D16C7] [float] NULL, 



[DB252D12C8] [float] NULL, 
[DB252D16C8] [float] NULL, 
[DB252D20C8] [float] NULL, 
CONSTRAINT [READINGS1DataTimeStamp] PRIMARY KEY CLUSTERED 
(
[DateAndTime] ASC 
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] 
) ON [PRIMARY] 

文本文件如下:

2013-02-19 00:00:00.000,6,945,1886,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,2040,6299,0,0,6,567,1248,0,0,251,8859,8655,0,0,10,316,1786,0,0,7,180,1206,0,0,1,16,56,0,0,368,18953,36949,0,0,NULL,NULL 
2013-02-19 01:00:00.000,6,147,1886,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,1516,6299,0,0,3,115,1248,0,0,250,5077,8655,0,0,9,219,1786,0,0,5,147,1206,0,0,1,15,56,0,0,362,8907,36949,0,0,NULL,NULL 
+1

我不认为BULK INSERT接受“NULL”为空值,请将NULL替换为文件中的空字符串 – EricZ 2013-05-13 19:26:59

+0

嗨,试过这个,但没有运气 – user2119912 2013-05-13 21:51:12

回答

1

好吧,你需要做的是改变你的陈述,以便在你使用的文件结束后KEEPNULLS。这会通知SQL服务器您希望保留您的空值。目前它试图将NULL作为字符串转换为您的FLOAT COLUMN。改变你的陈述看起来像这样。

BULK 
INSERT [ENERGY].[dbo].[READINGS1] 
     from 'c:\readings2.txt' 
with 
(
DATAFILETYPE='widechar', 
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n', 
KEEPNULLS 
) 
GO 

有关于此的文章BOL。 。

否则,您可以始终构建Integration Services包来处理此问题。这是从平面文件源导入信息的简单快捷方式。

+0

感谢您的想法,但这不会造成问题。我甚至用0替换了所有的NULL值,仍然有同样的问题。 – user2119912 2013-05-13 21:50:38

+0

然后尝试构建一个快速的SSIS包来处理这个问题,您可以在导入之前轻松地为平面文件设置数据类型,然后您将成为金牌! – Zane 2013-05-14 15:23:47

0

事实证明,表格的输入文本文件中有太多字段。