我想写一个把文本文件导入临时表的存储过程,不知怎么写,请各位高手指点。

我想写一个把文本文件导入临时表的存储过程,不知怎么写,请各位高手指点。
---------------------------------------------------------------

用导入导出啊,SQL SERVER中不是有吗,
用DTS也行的
---------------------------------------------------------------

CREATE PROCEDURE sp_Export
AS
DECLARE @strExport varchar(5000)
DECLARE cuTable CURSOR
FOR SELECT 'bcp pubs..' + name + ' out c:\export' + name + '.txt -c -Sfl -Usa -Psa' FROM sysobjects WHERE xtype='U'

OPEN cuTable

FETCH NEXT FROM cuTable INTO @strExport
WHILE (@@fetch_status <> -1)
BEGIN
EXEC master..xp_cmdshell @strExport
FETCH NEXT FROM cuTable INTO @strExport
END

CLOSE cuTable
DEALLOCATE cuTable
这是一个我写的倒出的列子,该一下就可以满足你的要求了
---------------------------------------------------------------

"'bcp pubs..' + name + ' out 目录' + name + '.txt -c -Sfl -Usa -Psa' "
---------------------------------------------------------------

高级编程:
这个问题我前几天刚刚碰到过,我可以用一名话把这个文件导入并自动处理,用不着临时表(table1),不过你喜欢也无所谓
文本文件一定要加上列名:

"a","b","c","d","e"
00001, 7398,MICROSOFT PRESS SPECIAL,49.99, 0-7356-0652-8
00002, 7832, MICROSOFT - WWF , 45.63, 0-4562-0582-5
00003, 5643, MICROSOFT - WWF , 21.5 , 0-5545-0457-7
用SELECT * FROM OPENROWSET('MSDASQL.1','Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=e:','select * from a.txt') 导入到sql

用INSERT INTO table1(a,b,c,d) SELECT * FROM OPENROWSET('MSDASQL.1','Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=e:','select * from a.txt')
直接存在要存的表里
这是秘密呀,我化了两天时间才研究出来的呀,查了几百篇文章呢

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus