非常奇怪的问题:导入数据错位

netsd 2007-11-06 04:39:18
将文本文件的数据导入到SQL server 2000中文版中,文本中数据之间用“|”分隔,导入时发现有两行发生错位,查看原来是在有个别中文字的地方,SRL基残留冻土层server 2000错误地认为是分隔符。

以下是这两条导入会发生错误的数据:
06122509642|PQY0130725|富华厅|联通公话(高墈坊1)|联通公话(高墈坊1)|[030]|2007-06-30|2006-12-27 09:12:06|有效|积分网点||1星店|非紧密型|加盟|普通积分方案一|0|||广州市番禺区沙湾镇福涌村高磡坊一街1号|中区|番禺|南郊服务厅||王志锦|13682233779|13682233779| |0:00~24:00||||中国工商银行|[3602061701033424917]|[440126195001024527]|李桂留|男
06010101201|GQY0230007|丽的(白云)|广州宏达靯材厂|广州宏达靯材厂|[0028699]|2010-12-31|2005-12-27 12:44:30|有效|积分网点||一厂一人|非紧密型|加盟|普通积分方案一|0|||白云区人和镇东华工业区东骏路5号|白云区|北区|||陶成勇|13527735398|13527735398| |8:30~21:30|||||[]|[422130197604130814]|陶成勇|男


在第一行的“高磡坊”的"磡"和第二行的“达靯材”的“靯”,在这两个字后面,就自动分隔成两个字段了,这两个字在数据库中用varchar类型,显视不出来,但用nvarchar类型,能显视,但导入还是错的。

操作系统windows 2003 server 中文版/windows XP中文版、SQL server 2000 中文版、文本文件编码为ANSI,用其它编码更加错误。

导入数据的SQL 脚本:

BULK INSERT dbo.data
FROM 'D:\data.txt'
WITH (
FIELDTERMINATOR = '|',
ROWTERMINATOR = '\n'
)


请问该如何解决?
...全文
243 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
netsd 2007-11-20
  • 打赏
  • 举报
回复
解决了,我是先将一条记录作为一个字段导入到另一个表中,再用SQL语句用游标的方式将这个表里的记录分解导到目的表。
hhwy_007 2007-11-08
  • 打赏
  • 举报
回复
先转成excel再导入
netsd 2007-11-08
  • 打赏
  • 举报
回复
没人能解决么?
netsd 2007-11-07
  • 打赏
  • 举报
回复
错误信息是这个:
OLE DB 提供程序 'MSDASQL' 报错。
[OLE/DB provider returned message: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序]
OLE DB 错误跟踪[OLE/DB Provider 'MSDASQL' IDBInitialize::Initialize returned 0x80004005: ]。
netsd 2007-11-07
  • 打赏
  • 举报
回复
按roy_88的写法,查询时有错:
from OpenRowset( 'MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};
DefaultDir=d:\; ', 'select * from data.txt ')a
中国风 2007-11-06
  • 打赏
  • 举报
回复
select *--查看结果再转换
from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};
DefaultDir=E:\;','select * from roy.txt')a
--这样查询出来
netsd 2007-11-06
  • 打赏
  • 举报
回复
写程序搞,就要写个windows服务,是因导入数据是每天自动更行的,在客户服务器上安装服务有限制,也不好维护。
dawugui 2007-11-06
  • 打赏
  • 举报
回复
1\看数据库是否能某种设置,跳过这个毛病.(这个我不会知道)
2\自己写程序搞.
netsd 2007-11-06
  • 打赏
  • 举报
回复
问题是要导入的内容不是我控制的,不能改字,分隔符也定了,不能改。
netsd 2007-11-06
  • 打赏
  • 举报
回复
“广州市番禺区沙湾镇福涌村高磡坊一街1号” 变成 “广州市番禺区沙湾镇福涌村高磡”和 “坊一街1号”两个字段;
“广州宏达靯材厂” 变成 “广州宏达靯”和“材厂”两个字段。
导入时用上面的脚本导入和用向导导入是一样的效果,都错位。实在没办法了
dawugui 2007-11-06
  • 打赏
  • 举报
回复
就这两个?把这两字改成其他字,导入库后再改回来.

22,206

社区成员

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

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