SQL Server 2005-大容量插入失败

SQL Server 2005-大容量插入失败,sql,sql-server,Sql,Sql Server,我有一个txt文件,其中包含1600行和82列逗号表示的数据,我正试图将这些数据导入表中。我在最后一个字段的每一行上都会出现以下错误: Msg 4864,16级,状态1,第1行 第1行第81列(db2252d20c8)的大容量加载数据转换错误(指定代码页的类型不匹配或无效字符) import语句是 BULK INSERT [ENERGY].[dbo].[READINGS1] from 'c:\readings2.txt' with ( DATAFILETYPE='widechar

我有一个txt文件,其中包含1600行和82列逗号表示的数据,我正试图将这些数据导入表中。我在最后一个字段的每一行上都会出现以下错误:

Msg 4864,16级,状态1,第1行 第1行第81列(db2252d20c8)的大容量加载数据转换错误(指定代码页的类型不匹配或无效字符)

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

好的,那么您需要做的是修改您的语句,以便在文件结束后使用
KEEPNULLS
。这将通知SQL server您希望保留空值。目前,它正试图将
NULL
转换为字符串,并将其转换为
浮点列
。把你的姿势改成这样

BULK
INSERT  [ENERGY].[dbo].[READINGS1]
       from 'c:\readings2.txt'
with
(
DATAFILETYPE='widechar',
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
KEEPNULLS
)
GO
有一篇关于这方面的文章


否则,您可以始终构建集成服务包来处理此问题。这是从平面文件源导入信息的一种简单快捷的方法。

结果是,输入文本文件中的字段太多,无法用于表。

我不认为批量插入接受“NULL”作为NULL值,请在文件中用空字符串替换NULL Hi,尝试了这个方法,但没有成功的想法,但这并不是问题的根源。我甚至用0替换了所有的空值,但仍然存在相同的问题。然后尝试构建一个快速SSIS包来处理此问题。在导入平面文件之前,您可以轻松设置平面文件的数据类型,然后您将获得成功!