0

我从 sql server 2005 中的批量加载中收到以下错误消息,并且经过想法我可以尝试解决这个问题。

第 2 行第 4 列(类型)的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。

BULK INSERT dbo.BobTable FROM 'C:\DataFiles\Bob.txt' 
WITH (FIELDTERMINATOR = '","', FIRSTROW=2,ROWTERMINATOR = '\n',DATAFILETYPE='char')

有任何想法吗?

"id","altid","altid2","type"    
123456789.00,"ABC1234","ABC1234","R"

我无法更改源文件,但我可以更改要插入的表。(不要问我为什么,但是小数已经插入到 ID 的末尾了……我只需要处理它。)

CREATE TABLE [dbo].[BOB](
  [id] [nvarchar](50) NULL,
  [Altid] [nvarchar](50) NULL,
  [Altid2] [nvarchar](50) NULL,
  [type] [nvarchar](50) NULL
)
4

1 回答 1

2

如果没有格式文件的帮助,批量插入不擅长处理引号和逗号分隔符。您需要创建或生成一个,然后使用批量插入引用它。

在您的示例中,第一个字段以 a 结尾,",而不是","SQL 认为该字段太长。

这是一个很好的起点: 创建格式文件

还有这个关于格式化文件的应用,里面也有你的问题的例子:Using a Format File to Bulk Import Data

我以前使用过这些方法,如果您的文件格式随时间变化,维护起来可能会很困难,但它为您提供了必要的BULK INSERT流程灵活性。

另外,您是否可以将 SSIS 用于任何此类工作?SSIS 可以比 BCP 格式文件更轻松地处理引号和逗号分隔的文件。如果你有选择,我完全推荐它。

于 2010-11-01T01:59:52.773 回答