日期:2014-05-17 浏览次数:20477 次
--随便写了一个:
--两个文件:c:\data\1a.txt c:\data\2b.txt 还有一个schema.ini,即格式配置文件
--1.准备工作:创建临时表,用来存放目录文件编号和名称
CREATE TABLE tttt(a VARCHAR(100))
INSERT tttt EXEC MASTER.dbo.xp_cmdshell 'dir /b/s c:\data'
GO
ALTER TABLE tttt ADD code varchar(20),name VARCHAR(20),fullname VARCHAR(20)
GO
UPDATE tttt SET fullname=PARSENAME(replace(REPLACE(a,'.txt',''),'\','.'),1)
UPDATE tttt SET code=LEFT(fullname,PATINDEX('%[^0-9]%',fullname)-1),NAME=REPLACE(fullname,LEFT(fullname, PATINDEX('%[^0-9]%',fullname)-1),'')
DELETE FROM tttt WHERE a IS NULL OR fullname='ini'
GO
--创建要导入的目的表,code为编号,name为文件名, a,b,c字段为txt中的字段
CREATE TABLE Res(id INT IDENTITY(1,1),CODE VARCHAR(20),NAME VARCHAR(20),a VARCHAR(10),b VARCHAR(10),c VARCHAR(10))
GO
--用分布式查询opendatasource和扩展过程实现一次导入:
exec MASTER.DBO.xp_execresultset '
SELECT ''INSERT INTO Res(CODE,NAME,A,B,C) SELECT ''''''+LTRIM(CODE)+'''''',''''''+LTRIM(NAME)+'''''',* FROM OPENDATASOURCE(''''MICROSOFT.JET.OLEDB.4.0'''',''''Text;HDR=yes;Database=c:\data'''')...[''+FULLNAME+''#txt]''
FROM tttt ','test' --这里的test是库的名称
--查询结果
SELECT * FROM res
--result
/*id CODE NAME a b c
----------- -------------------- -------------------- ---------- ---------- ----------
1 1 a 1 2 3
2 1 a r 6 8
3 1