注册 登录
编程论坛 VFP论坛

请教各位老师如何快速dbf表导入到sql server服务器上,谢谢

wxzd123 发布于 2024-07-28 22:11, 435 次点击
con = Sqlstringconnect([Driver={SQL Server};Server=192.168.1.100;UID=sa;PWD=a;Database=sjk])
sele shuju
scan
SQLExec(con," INSERT INTO xuesheng  (学号,姓名,性别)  VALUES (?shuju.学号,?shuju.姓名,?shuju.性别)")
endscan
这样记录多了很慢,请问老师有什么快速的方法吗?谢谢
11 回复
#2
easyppt2024-07-28 22:19
自己拼接SQL,然后直接提交。比如拼接100个 insert 语句的字符串,依然直接SPT提交。
#3
wxzd1232024-07-28 22:35
easyppt老师,您好,没明白老师的意思,能简单举例吗?谢谢
#4
yiyanxiyin2024-07-29 10:00
调用sqlserver的 BULK INSERT
#5
wxzd1232024-07-29 11:14
yiyanxiyin老师,有示例吗
#6
shizi02024-07-29 11:15
程序代码:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
select * into MyTarget1 from openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=D:/data','select * from MyDbf1.Dbf')
*...
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
#7
wxzd1232024-07-29 11:52
shizi0老师,您好,这段代码是在vfp中运行吗?还是在sql服务器上,谢谢
#8
wxzd1232024-07-30 05:36
哪位老师给个例子
#9
laowan0012024-07-30 08:11
con = Sqlstringconnect([Driver={SQL Server};Server=192.168.1.100;UID=sa;PWD=a;Database=sjk])
xsqltxt = ''
sele shuju
scan
    xsqltxt = xsqltxt + "INSERT INTO xuesheng  (学号,姓名,性别)  VALUES (?shuju.学号,?shuju.姓名,?shuju.性别);"
endscan
SQLExec(con,xsqltxt)
如果想只执行一次,就这样拼接SQL语句吧
可以测试一下两种方法的耗时
#10
wxzd1232024-07-30 08:25
laowan001版主您好,如果字段有50个,记录有4000条,字符串那么长能行吗?
#11
liuxingang282024-08-02 09:46
要想速度快,只能是先将 dbf 另存为低版本的 xls(如:excel 5.0),再通过数据库服务器上的“导入/导出”或 BULK INSERT 命令将 xls 导入数据库。
#12
iswith2024-08-04 11:41
利用NetBulkcopy+NetOffice,直接在vfp读出任何版本的xlsx表信息,往Netbulkcopy插入造出Bulkcopy指令本地远程都可以。
1