首页 新闻 会员 周边

文本数据文件的汇总导入

0
悬赏园豆:10 [已解决问题] 解决于 2008-06-02 10:35
<P>数据记录是以ASCII码的方式追加到文件尾的,虽然偶尔也会有中文。</P> <P>文件小的时候用记事本打开就可以,内容大致如下:</P> <P>1|w|234567|xxxx|iiii|ccccc|eeee<BR>2|w|234567|yyyy|iiii|ccccc|eeee<BR>2|w|234567|xxxx|iiii|ccccc|eeee<BR>2|w|234567|xxxx|iiii|ccccc|eeee<BR>3|w|234567|zzzz|iiii|ccccc|eeee</P> <P>现在的问题是文件过大,每天有三个每个700M的文件,原想把它导入SQL Server中,方法也可行的,但每天要导三次(周六日节假日也会有文件),这样时间就会浪费在操作上面了,想知道有没有方法有脚本可以批量作业的,可以指定使用“|”作分隔符的,又可以过滤掉重复数据的(重复数据会很多)方法。</P> <P>我的提问不会加上“紧急”、“求救”的字眼来吸引眼球,如果您不能解决我的问题,我也不会有任何抱怨,您可能在另外的术业上有更高的成就,如果您对这类需求有些许经验的话,希望可以适时分享一下,不胜感激。</P>
风海迷沙的主页 风海迷沙 | 老鸟四级 | 园豆:4453
提问于:2008-05-28 10:44
< >
分享
最佳答案
0
可以通过批量导入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中每天定时处理了。 如果有重复数据,你可以先将文本文件中的数据导入到一个临时表中,然后再过滤掉重复的,导入到正式表中。
玉开 | 大侠五级 |园豆:8822 | 2008-05-28 11:14
其他回答(1)
0
BULK INSERT 表名 FROM 文本文件.txt WITH ( FIELDTERMINATOR = '|', //字段分隔符 ROWTERMINATOR = '\n' //行段分隔符 ) 下面的链接是更详细的说明: http://www.cnblogs.com/Nina-piaoye/archive/2007/10/18/928523.html
伽马科技.攻城师 | 园豆:1303 (小虾三级) | 2008-05-28 11:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册