【 置顶 高手指点! 】BULK INSERT 在SQL 2000下正常,在SQL 2008下报错

woodh 2011-09-27 12:04:37
以下的语句在SQL 2000 中可以正常执行:

TRUNCATE TABLE A
BULK INSERT A FROM 'D:\test.txt'
WITH( CODEPAGE='RAW', FIRSTROW=2 )

但在SQL 2008下的错误:
Msg 7339, Level 16, State 1, Line 1
OLE DB provider 'BULK' for linked server '(null)' returned invalid data for column '[BULK].PartnerNumber'.

请高手指点!
...全文
192 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2011-09-30
  • 打赏
  • 举报
回复
或者你把数据截断,使用一小部分,如果2000成功,2008不成功,比较是那个(些)数据造成你在2008中导入不成功.
dawugui 2011-09-30
  • 打赏
  • 举报
回复
你不给出具体数据,让我们如何帮你分析问题?
woodh 2011-09-30
  • 打赏
  • 举报
回复
upupupup
woodh 2011-09-28
  • 打赏
  • 举报
回复
没有人指点一下吗?
中国风 2011-09-27
  • 打赏
  • 举报
回复
參照聯機例子

利用垂直線來匯入檔案資料
這個範例利用垂直線 (|) 作為欄位結束字元,利用 |\n 作為結束字元,從指定的資料檔中,將訂單詳細資訊匯入 AdventureWorks.Sales.SalesOrderDetail 資料表中。

BULK INSERT AdventureWorks.Sales.SalesOrderDetail
FROM 'f:\orders\lineitem.tbl'
WITH
(
FIELDTERMINATOR =' |',
ROWTERMINATOR =' |\n'
)
中国风 2011-09-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 woodh 的回复:]

A 表 表结构是一致的。

test.txt文件导入2000时,是按字段定长导入。 导入2008时是按tab分隔导入的。有区别吗?
[/Quote]

看Txt文件格式,椐據格式導入,指定分隔符和換行符
woodh 2011-09-27
  • 打赏
  • 举报
回复
A 表 表结构是一致的。

test.txt文件导入2000时,是按字段定长导入。 导入2008时是按tab分隔导入的。有区别吗?
中国风 2011-09-27
  • 打赏
  • 举报
回复
看看txt文件是否有換行?
不是一行行顯示時有問題
geniuswjt 2011-09-27
  • 打赏
  • 举报
回复
数据类型的问题应该是
yubofighting 2011-09-27
  • 打赏
  • 举报
回复
我理解错了,不好意思
yubofighting 2011-09-27
  • 打赏
  • 举报
回复

---sql server2008 bulk insert
insert into A select bulkcolumn from openrowset(bulk 'D:\test.txt',single_blob) as x
AcHerat 2011-09-27
  • 打赏
  • 举报
回复
文本和表中的列对照下,应该有不符合列数据类型的记录。
快溜 2011-09-27
  • 打赏
  • 举报
回复
导入字段类型不对哦。
dawugui 2011-09-27
  • 打赏
  • 举报
回复
invalid data for column

有数据针对该列无效.

例如超界,类型不匹配.

检查2008的表结构和2000的表结构是否一致?
-晴天 2011-09-27
  • 打赏
  • 举报
回复
表的数据类型是不是相同?
woodh 2011-09-27
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 roy_88 的回复:]
引用 15 楼 woodh 的回复:

这个问题应该是SQL 2000 与 SQL 2008的版本问题。同样的表结构,同样的语句,同样的文件,导入2000没有问题,导入2008报错!!!!

求高手指点!!

檢查文件格式,或把Txt和表結構貼出來,大家看看
[/Quote]


这个不方便贴。 我比较过的,一致。应该是SQL 2000 与 SQL 2008的版本问题
中国风 2011-09-27
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 woodh 的回复:]

这个问题应该是SQL 2000 与 SQL 2008的版本问题。同样的表结构,同样的语句,同样的文件,导入2000没有问题,导入2008报错!!!!

求高手指点!!
[/Quote]
檢查文件格式,或把Txt和表結構貼出來,大家看看

woodh 2011-09-27
  • 打赏
  • 举报
回复
这个问题应该是SQL 2000 与 SQL 2008的版本问题。同样的表结构,同样的语句,同样的文件,导入2000没有问题,导入2008报错!!!!

求高手指点!!
--小F-- 2011-09-27
  • 打赏
  • 举报
回复
BULK INSERT 库名..表名 
FROM 'c:\test.txt'
WITH (
FIELDTERMINATOR = ';', ---分隔符
ROWTERMINATOR = '\n' ---换行符
)
--小F-- 2011-09-27
  • 打赏
  • 举报
回复
BULK INSERT 库名..表名 
FROM 'c:\test.txt'
WITH (
FIELDTERMINATOR = ';',
ROWTERMINATOR = '\n'
)
加载更多回复(1)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧