职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1608|回复: 1

有关日志txt文本文件导入数据库表

[复制链接]
蓝色梦幻 发表于 2008-8-13 08:28 | 显示全部楼层 |阅读模式
ALTER PROCEDURE [dbo].[proc_test]
       
AS
--------批量导入日志文件-------------
declare  @path  nvarchar(4000)  
select  @path=\'e:\\文本路径\\\';

if  right(@path,1)<>\'\\\'
  select  @path=@path+\'\\\'

declare    @tmp table(fn  nvarchar(4000),depth  int,isfile  int)  
--整个文件夹
insert  @tmp  exec  master..xp_dirtree  @path=@path,@depth=1,@file=1  

declare  @fname  varchar(250)
declare  @sql varchar(4000)  
declare  tb_cursor  cursor  --定义游标
for  
--文件夹里面包含的类似test1.log.2008-01-01命名的所有txt文件
select fn from @tmp where  isfile=1 and  fn  like  \'%.log.20__-__-__\'
open  tb_cursor  
fetch next from tb_cursor into  @fname  
while  @@fetch_status<>-1 --逐个导入文件
begin
----logsrc是一个表名称,这时注意的是,对应的txt文件里面有几个相隔的字段需导入,这个表就要有几个字段名对应
print  @fname;
         select @sql=\'bulk  insert  logsrc  from  \'\'\'+@path+@fname+\'\'\'
                      with  (formatfile=\'\'\'+@path+\'\'+\'format.xml\'\')\'
    exec(@sql)  
    fetch next from tb_cursor into  @fname  
end  
close  tb_cursor  
deallocate  tb_cursor --游标结束
-----format.xml文件格式:
----注意下面的“列名N”对应的是logsrc表里面相应的列名
<?xml version=\"1.0\"?>
<BCPFORMAT xmlns=\"http://schemas.microsoft.com/sqlserver/2004/bulkload/format\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">
  <RECORD>
    <FIELD ID=\"1\" xsi:type=\"CharTerm\" MAX_LENGTH=\"4000\" TERMINATOR=\" \"/>
    <FIELD ID=\"2\" xsi:type=\"CharTerm\" MAX_LENGTH=\"4000\" TERMINATOR=\" \"/>
    <FIELD ID=\"3\" xsi:type=\"CharTerm\" MAX_LENGTH=\"4000\" TERMINATOR=\" \"/>
    <FIELD ID=\"4\" xsi:type=\"CharTerm\" MAX_LENGTH=\"4000\" TERMINATOR=\" \"/>
    <FIELD ID=\"5\" xsi:type=\"CharTerm\" MAX_LENGTH=\"4000\" TERMINATOR=\" \"/>
    <FIELD ID=\"6\" xsi:type=\"CharTerm\" MAX_LENGTH=\"4000\" TERMINATOR=\"\\n\"/>
  </RECORD>
  <ROW>
    <COLUMN SOURCE=\"1\" NAME=\"列名1\" xsi:type=\"SQLNVARCHAR\"/>
    <COLUMN SOURCE=\"2\" NAME=\"列名2\" xsi:type=\"SQLNVARCHAR\"/>
    <COLUMN SOURCE=\"3\" NAME=\"列名3\" xsi:type=\"SQLNVARCHAR\"/>
    <COLUMN SOURCE=\"4\" NAME=\"列名4\" xsi:type=\"SQLNVARCHAR\"/>
    <COLUMN SOURCE=\"5\" NAME=\"列名5\" xsi:type=\"SQLNVARCHAR\"/>
    <COLUMN SOURCE=\"6\" NAME=\"列名6\" xsi:type=\"SQLNVARCHAR\"/>
  </ROW>
</BCPFORMAT>
一路顺风 发表于 2008-8-16 21:54 | 显示全部楼层
收益匪浅!
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-2 08:09 , Processed in 0.140222 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表