[已解决问题] 文本数据文件的汇总导入
提问时间: 2008-05-28 10:44
悬赏分:10 浏览:253 次

数据记录是以ASCII码的方式追加到文件尾的,虽然偶尔也会有中文。

文件小的时候用记事本打开就可以,内容大致如下:

1|w|234567|xxxx|iiii|ccccc|eeee
2|w|234567|yyyy|iiii|ccccc|eeee
2|w|234567|xxxx|iiii|ccccc|eeee
2|w|234567|xxxx|iiii|ccccc|eeee
3|w|234567|zzzz|iiii|ccccc|eeee

现在的问题是文件过大,每天有三个每个700M的文件,原想把它导入SQL Server中,方法也可行的,但每天要导三次(周六日节假日也会有文件),这样时间就会浪费在操作上面了,想知道有没有方法有脚本可以批量作业的,可以指定使用“|”作分隔符的,又可以过滤掉重复数据的(重复数据会很多)方法。

我的提问不会加上“紧急”、“求救”的字眼来吸引眼球,如果您不能解决我的问题,我也不会有任何抱怨,您可能在另外的术业上有更高的成就,如果您对这类需求有些许经验的话,希望可以适时分享一下,不胜感激。

最佳答案
可以通过批量导入BULK INSERT命令实现你的问题,请参考下面的文章。 http://msdn.microsoft.com/zh-cn/library/ms190919.aspx http://msdn.microsoft.com/zh-cn/library/ms190919.aspx 写了一点例子代码,如下: [code] if object_id('t_bulkinsert','U') is not null drop table t_bulkinsert; go create table t_bulkinsert ( id int not null primary key, name varchar(10), [desc] varchar(3000) ) go BULK INSERT t_bulkinsert FROM 'C:\t_bulkinsert.txt' WITH ( DATAFILETYPE='char', FIELDTERMINATOR='|' ); [/code] 文本文件'C:\t_bulkinsert.txt' 中的内容: [code] 1|A|AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 2|B|BBBBBBBBBBBBBBBBBBBBBBBBBBBBB 3|C|CCCCCCCCCCCCCCCCCCCCCCCCCCCCC [/code] 最好文本文件名有一定规则,这样你就可以写一个存储过程在Sql server的job中每天定时处理了。 如果有重复数据,你可以先将文本文件中的数据导入到一个临时表中,然后再过滤掉重复的,导入到正式表中。
2008/5/28 11:14:35 回答者:玉开


提问者对于答案的评价:JackLee答案也很满意,连接里也找到了有用的东西,但本着先入为主的原则,给先回答的人为答案了。
其它回答(1)
BULK INSERT 表名 FROM 文本文件.txt WITH ( FIELDTERMINATOR = '|', //字段分隔符 ROWTERMINATOR = '\n' //行段分隔符 ) 下面的链接是更详细的说明: http://www.cnblogs.com/Nina-piaoye/archive/2007/10/18/928523.html
4个月前   回答者:JackLee - 小虾三级
评论
4个月前   玉开 :
我将你加为了好友。
   您需要登录以后才能回答!
 

我要提问

我的问题


快到期问题

> 问题排行榜

相关内容

相关链接