主题:如何向数据库同时导入多个文本文件
crazypp
[专家分:0] 发布于 2008-10-04 10:42:00
我知道导入文本文件的命令是:append from 路径\文件名.txt delimited 但是如果同一个文件夹内有多个文本文件,如何一次导入呢?比如说在c:\vfp内有n个文本,命名格式为A1~A(i),i是不固定的,有时多有时少 谢谢各位大虾了
回复列表 (共7个回复)
沙发
fyyylyl [专家分:8550] 发布于 2008-10-04 11:25:00
先用AIR()取得A*.txt文件列表,再用FOR...ENDFOR导入
板凳
qjbzjp [专家分:8830] 发布于 2008-10-04 13:00:00
USE 数据表
n=0
FOR i=1 TO ADIR(alj,"a.*")
DO WHILE .t.
n=n+1
Afile='a.'+transform(n) &&+".txt"
IF FILE(afile)
APPEND FROM &afile DELIMITED
EXIT
ENDIF
ENDDO
NEXT
3 楼
crazypp [专家分:0] 发布于 2008-10-07 23:39:00
非常感谢qjbzjp的帮助
要是有注解就好了 因为有些地方我看不懂 呵呵 菜菜的我
还有我照你的方法试了 但是好像没有反应啊??按您给的代码:
USE 数据表
n=0
FOR i=1 TO ADIR(alj,"a.*") &&这里我弄不明白什么意思,照我理解应该是*.txt才能&&返回正确的数值
DO WHILE .t.
n=n+1
Afile='a.'+transform(n) &&+".txt" &&这个地方也不是很明白
IF FILE(afile)
APPEND FROM [u]&[/u]afile DELIMITED && 那个&是什么意思啊?
EXIT
ENDIF
ENDDO
NEXT
麻烦给解答一下啊 谢谢咯
4 楼
qjbzjp [专家分:8830] 发布于 2008-10-08 18:26:00
我原来理解你的文件名为:a.1、a.2、a.3……a.n了,已经过测试无误。
如果是文件名是a1.txt、a2.txt、a3.txt……an.txt,应该改成:
USE 数据表
n=0
FOR i=1 TO ADIR(alj,"a*.txt") &&ADIR()函数是将a*.txt文件信息放入数组中,然后返回文件的个数
DO WHILE .t.
n=n+1
Afile='a'+transform(n)+".txt"
IF FILE(afile)
APPEND FROM &afile DELIMITED &&是宏代换
EXIT
ENDIF
ENDDO
NEXT
未经测试,请自己测试有没有问题。
5 楼
crazypp [专家分:0] 发布于 2008-10-08 22:16:00
再次感谢qjbzjp的帮助
我按照您的方法试过了, 但是现在的问题是我把代码写在一个命令按钮上,运行后,cpu占有率突然达到100%,一直无法导入数据,没有反应,必须在任务管理器上结束才行。就算是只有一个文本也是一样,我用的是vfp9.0 还望qjbzjp
再次伸出援手啊
我把我修改的代码发给你帮看看
USE "d:\物流数据信息系统(vfp)\主数据库!main"
n=0
FOR i=1 TO ADIR(fjsj,"d:\数据\print*.*") &&ADIR()函数是将a*.txt文件信息放入数组中,然后返回文件的个数
DO WHILE .t.
n=n+1
Afile='print'+transform(n)+".txt"
IF FILE(afile)
APPEND FROM &afile DELIMITED &&是宏代换
EXIT
ENDIF
ENDDO
NEXT
6 楼
qjbzjp [专家分:8830] 发布于 2008-10-09 09:43:00
USE "d:\物流数据信息系统(vfp)\主数据库!main"
n=0
FOR i=1 TO ADIR(fjsj,"d:\数据\print*.txt") &&ADIR()函数是将a*.txt文件信息放入数组中,然后返回文件的个数
DO WHILE .t.
n=n+1
Afile='d:\数据\print'+transform(n)+".txt"
IF FILE(afile)
APPEND FROM &afile DELIMITED &&是宏代换
EXIT
ENDIF
ENDDO
NEXT
已在9。0下测试通过。
7 楼
crazypp [专家分:0] 发布于 2008-10-09 12:42:00
呵呵 终于成功了 太感谢qjbzjp大大的耐心帮助了
我来回复