如何自动导入文本数据?
有以逗号分隔的文本文件数据,通过数据库导入向导可以一步步导入到数据库中。现在能不能在程序中比如vc调用相关的过程或脚本完成这个导入过程? 问题点数:20、回复次数:11Top
1 楼ghxghx()回复于 2002-05-28 10:41:38 得分 2
调用这个可执行文件:
dtsrun
用sql来写是:
use master
xp_cmdshell 'dtsrun.exe', NO_OUTPUT
Top
2 楼bluesky137(蓝色的天空)回复于 2002-05-28 10:44:49 得分 0
to ghxghx()
能不能具体一点啊,比如要将data1.txt 数据导入到数据库mydb的data表中,怎么写呢?Top
3 楼leimin(黄山光明顶)回复于 2002-05-28 10:51:36 得分 8
导入文件
EXEC master..xp_cmdshell 'bcp test.dbo.tablename in c:\temp1.txt -c -q -S"servername" -U"sa" -P""'
导出文件
EXEC master..xp_cmdshell 'bcp test.dbo.tablename out c:\temp1.txt -c -q -S"servername" -U"sa" -P""'
给分吧!Top
4 楼ghxghx()回复于 2002-05-28 10:57:50 得分 0
先建好dts包
再运行dtsrun
dtsrun的用法,它本身带帮助
直接运行 dtsrun 就是他的帮助Top
5 楼bluesky137(蓝色的天空)回复于 2002-05-28 11:50:18 得分 0
to leimin(leimin)
别急嘛,我很守信用的。
如果要调整文本文件的字段和表的字段对应关系,而不是一一对应的关系,该怎么弄呢?Top
6 楼coolbily(Gavin Zhang)回复于 2002-05-28 12:22:23 得分 10
建议用寸储过程
CREATE PROCEDURE aaa
AS
BULK INSERT 数据库名..表名 FROM '文件名'
WITH (
DATAFILETYPE = 'char', //字符行
FIELDTERMINATOR = ',', //以逗号作为隔离符号
ROWTERMINATOR = '\n' //换行符
)
GOTop
7 楼coolbily(Gavin Zhang)回复于 2002-05-28 12:24:09 得分 0
我已经调试过了,直接调用寸储过程就可以了
文件格式
1111,11111,11111,11111
2222,33333,33333,33333Top
8 楼bluesky137(蓝色的天空)回复于 2002-05-28 12:27:24 得分 0
to coolbily(为什么PING不到我自己?)
等一下,我试试哦Top
9 楼bluesky137(蓝色的天空)回复于 2002-05-29 11:04:34 得分 0
to coolbily(为什么PING不到我自己?)
怎么把文本文件参数传入到这个存储过程中,字符变量好像不能直接用在from 后面啊?另外,如果这个文本文件只有几列而不是全部需要导入,应该怎么设置呢?Top
10 楼coolbily(Gavin Zhang)回复于 2002-05-29 14:03:58 得分 0
是的from后不能加参数的,你的用
CREATE PROCEDURE aaa
@name1 char(100)
AS
declare @sql varchar(300)
set @sql='BULK INSERT 数据库名..表名 FROM '''+@name1+''' WITH (DATAFILETYPE =
'''+'char'+''',FIELDTERMINATOR = '''+','+''',ROWTERMINATOR = '''+'\n'+''',FIRE_TRIGGERS)'
exec(@sql)Top
11 楼coolbily(Gavin Zhang)回复于 2002-05-29 14:06:27 得分 0
"如果这个文本文件只有几列而不是全部需要导入,应该怎么设置呢?"
这个我现在也没研究过,你看看bulk insert的帮助手册后的参数设置Top
12 楼bluesky137(蓝色的天空)回复于 2002-05-29 14:12:06 得分 0
ok! thanks!Top




