2、用实现转换用VisualBasic编程实现转换,即通过SQLServer提供的ODBC接口(开放数据库接口)及VisualBasic中应用数据访问,建立VisualBasic与SQLServer的连接,由VisualBasic向SQLServer提交创建表命令,然后将.DBF的每条记录提交给SQLServer,完成数据转换。DBF的数据结构是(examp1.DBF):
实现步骤:
(1)在数据库服务器”sqlserver1”中建立数据库sqlexample,建立一个表”example1”,其结构与examp1.DBF结构相同。其结构是:
(2)、ODBC的设置:在客户机上进入Windows的控制面板(Controlpanel)。双击ODBC数据源(32位)图标,进行数据库的ODBC驱动设置。在用户DSN下,按“添加”,选择SQLServer,在名称输入”sql1”,服务器输入”sqlserver1”,用户名输入”sa”,口令输入”123456”,测试是否连通。
(3)、在VisualBasic建立一工程,添加“引用”MicrosoftActiveXDataObjects2.1Library和MicrosoftDAO3.51objectlibrary。在Form1上建一个Command1,将Command1的Caption改为转换。程序清单如下:
PrivateSubCommand1_Click()
DimdbAsDatabase
DimtbAsRecordset
‘打开C:examp1.DBF
Setdb=OpenDatabase(c:,False,False,”foxpro2.5”)
Settb=db.OpenRecordset(examp1)
Dimconn1AsADODB.Connection
Dimcmd1AsADODB.Command
Setconn1=NewADODB.Connection
Setcmd1=NewADODB.Command
cons1=”ODBC;DATABASE=sqlexample;UID=sa;PWD=123456;DSN=sql1”
conn1.Opencons1
Setcmd1.ActiveConnection=conn1
Dowhilenottb.EOF
Cmds1=”insertintoexample1values(‘“&tb.Fields(0)&”’,‘“&tb.Fields(1)
&”’)”
cmd1.CommandText=cmds1
cmd1.Execute
tb.MoveNext
Loop
MsgBox“载入完毕”,,”提示”
Cnn1.Close
Unloadme
EndSub
使用上述方法,只要知道一些简单的SQLServer操作及VisualBasic编程便可实现将DBF中的数据载入到SQLServer中。但存在不足之处,如果DBF中数据量很大,超过几十万条记录时,载入的时间将会很长。解决大批量数据载入,需要用到SQLServer所提供的块拷贝实用程序(bcp)
3、利用SQLServer所提供的块拷贝实用程序(bcp)载入数据
实用程序bcp.exe可从Mssql7目录下的Binn子目录下获得。
3.1、bcp的命令格式及主要参数
主要参数:
3.2、实现转换的具体方法我们将上面的例子,调用Bcp,将数据载入到SQLServer数据库中。先在目录下建立一个文件,名为exam.fmt,其中exam.fmt的内容为:
7.0
2
1SQLCHAR04""1Id
2SQLCHAR020""2name
bcp1=”bcp.exesqlexample..example1in‘
:examp1. DBF’/Ssqlserver1/Usa
/P123456/fexam.fmt”
ok1=Shell(bcp1,0)
EndSub该方法可以用较短的时间将大量数据载入到SQLServer数据库中。但也有其缺点,灵活性较差,使用较为繁琐。1