sqlserver中如何实现DBF文件和sqlserver表之间的导入或者导出

在SQL Server 中,如何实现DBF文件和SQL Server表之间的导入或者导出?

原来使用SQL Server 2000数据库,通过DTS工具很方便地在SQL Server和DBF文件之间进行数据的导入和导出,现在安装了SQL Server2005之后,发现其提供的“SQL Server导入导出向导”中的数据源没有原来的丰富,缺少对DBF文件的支持。

1、右击数据库,选择“任务”>“导入数据”,打开“SQL Server导入和导出向导”对话框。
2、在“数据源”中选择Microsoft OLE DB Provider for Visual FoxPro,单击“属性”按钮,打开“数据连接属性”对话框。
3、单击Select or enter a database name后面的“...”按钮,可以选择一个数据库或自由表,并单击“确定”按钮关闭“数据连接属性”对话框。
4、单击“下一步”进行“选择目标”页面,直接单击“下一步”。
5、在“指定表复制或查询”页面,直接单击“下一步”。
6、在“选择源表和视图”页面选择要导入的Visual FoxPro表后,单击“下一步”。
7、然后“下一步”直至完成。

需要注意的是,你的表的数据类型要与SQL Server能够成功转换,否则要出错。


VFP MVP

去这里下载吧http://www.microsoft.com/downloads/details.aspx?FamilyId=E1A87D8F-2D58-491F-A0FA-95A3289C5FD4&displaylang=en

在VFP9安装光盘中也有

 

======================================其他方法-未试========================================================

 

dbf导入sqlserver

 

--如果接受导入数据的SQL表已经存在 

Insert Into 已经存在的SQL表名 Select * From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select * from aa.DBF') 

--也可以对应列名进行导入,如: 

Insert Into 已经存在的SQL表名 (列名1,列名2...) Select (对应列名1,对应列名2...) From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select * from aa.DBF') 


-------------如果接受导入数据的SQL表不存在,导入时创建 


--方法一:有一个缺点:把DBF表导入SQL Server中后,马上用VISUAL FOXPRO打开DBF表,会提示“不能存取文件”,即这个表还被SQL打开着呢。可是过了1分钟左右,再打开DBF表就可以了,说明经过一段时间后查询分析器才把这个表关闭。 

Select * Into 要生成的SQL表名 From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select * from dbf表名.DBF') 

--方法二:有一个缺点:把DBF表导入SQL Server中后,马上用VISUAL FOXPRO打开DBF表,会提示“不能存取文件”,即这个表还被SQL打开着呢。可是过了1分钟左右,再打开DBF表就可以了,说明经过一段时间后查询分析器才把这个表关闭。 

Select * Into TEMP1 From openrowset('VFPOLEDB.1','C:';'admin';'' ,'select * from dbf表名.DBF') 
--如果没有安装VFP,需要把vfpoledb.dll拷贝到SYSTEM目录下,并注册。 


--方法三:导入SQL SERVER后,源表再用VFP打开就不提示“不能存取文件”,说明语句执行后就把源表关闭了。不过也有不尽人意的地方,就是用前两种方式导入后,源表中的字符型字段导入后SQL表字段对应变成NVARCHAR了。 

Select * Into 要生成的SQL表名 From OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase IV;HDR=NO;IMEX=2;DATABASE=c:','select * from dbf表名.dbf') 

--方法四:导入SQL SERVER后,源表再用VFP打开就不提示“不能存取文件”,说明语句执行后就把源表关闭了。不过也有不尽人意的地方,就是用前两种方式导入后,源表中的字符型字段导入后SQL表字段对应变成NVARCHAR了。 

Select * Into 要生成的SQL表名 From OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase III;HDR=NO;IMEX=2;DATABASE=c:','select * from dbf表名.dbf') 

--方法五:用BDE驱动导入时,再用VFP打开源表时不会提示“不能存取文件” 

Select * From OPENROWSET('MSDASQL','CollatingSequence=ASCII;DBQ=D:SEND;DefaultDir=D:SEND;Deleted=0;Driver={Driver do Microsoft dBase (*.dbf)};FIL=dBase 5.0','select * from dbf表名.DBF') A 
--前提:先在机器上安装BDE的驱动 


--也可以只导几个字段 

Select * Into 要生成的SQL表名 From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select 字段1,字段2 from aa.DBF') 

/*说明: 
SourceDB=c: c:是dbf文件的存放目录 
aa.Dbf 是dbf文件名 
*/
 

工具导入1:通过SQL Server的“导入导出数据”工具(DTS) 

1、建立Visual FoxPro的数据源: 

在ODBC中建立一个Visual FoxPro的数据源(ODBC-Microsoft Visual FoxPro Driver)的步骤如下: 
打开ODBC配制窗口 -> 
选择“用户DSN”页面或“系统DSN”页面,建议用后者 -> 
点击“添加”按钮 -> 
选择“Microsoft Visual FoxPro Driver”这个驱动 -> 
在Data Source Name(数源源名称)处输入此数据源名称,可自定,本例如LjDbf,Database Type(数据库类型)处选择“Free Table directory”(自由表路径),然后在下面的Path(路径)处设置你要导入的DBF表所在的路径,本列如“D:” -> 
点击“OK”(确定)配制完成 -> 
关闭ODBC配制窗口 

2、通过SQL的导入导出数据(DTS)来把DBF表导成SQL表: 

开始 -> 
程序 -> 
Microsoft Sql Server-导入导出数(DTS)-> 
下一步 -> 
此步为“选择数据源”的窗口,“数据源”选“Microsoft Visual FoxPro Driver”,同时在"用户/系统DSN"处选择你刚刚配制的数据源名(本例如LjDbf,当然上面配制数据源的过程也可以通过“用户/系统DSN”后面有一个“新建”按钮来完成),然后点击“下一步” -> 
此步为“选择目的”的窗口,“目的”选"用于SQL Server的Microsoft OLE DB提供程序"(此项一般为默认),同时选择你要导成的SQL表的存放数据库、服务器及服务器的验证方式,然后点击“下一步” -> 
这时: 
A:如果要把DBF表全部字段均导入,则选择“从源数据库复制表和视图”,点击“下一步” -> 
选择要导入的DBF表,在‘目的’处可修改生成SQL表的名称,默认与DBF表名一样,点击“下一步” -> 
再点击“下一步” -> 
最后点击“完成”进行导入即可(导入成功与否DTS会有提示)。 

B:如果只导入DBF表中的几个字段或全部字段(如果导入全部字段,也可以用上面步骤A,结果是一样的,只是方法不同),则选择“用一条查询指定要输出的数据”,点击“下一步”-> 
点击“查询生成器”,选择要导入的DBF表(此时可选择列),点击“下一步” -> 
指定排序顺序,选一个或多个排序字段,如果不用排序,此步可略,点击“下一步” -> 
此步可以指定查询条件,如果没有条件,此步可略,点击“下一步” -> 
出现了对应的SQL语句(也可以再修改生成的SQL语句,但不推荐),再点击“下一步” -> 
这时可修改要生成的SQL表名,默认为“结果”,再点击“下一步” -> 
再点击“下一步” -> 
最后点击“完成”进行导入即可(导入成功与否DTS会有提示)。 



工具导入2: 

先把DBF表转成EXCEL或TXT,然后SQL SERVER的导入导出工具把EXCEL或TXT导入即可(此方法类似方法二,不再介绍)。 

----------Sql Server表 导出 Dbf---------- 

 方法一:如果DBF表已经存在,在查询分析器中执行以下语句(先选择对应的数据库) 


Insert Into openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select * from 表B.DBF') Select * From表a 

/*说明: 
SourceDB=c: c:是dbf文件的存放目录 
表B.Dbf 是已经存在dbf文件名,数据导入此表 
表A.Dbf 是要导出的SQL表名 
*/
 


方法二:如果DBF表不存在,直接导出时创建,通过SQL Server的“导入导出数据”工具 

1、建立Visual FoxPro的数据源: 

在ODBC中建立一个Visual FoxPro的数据源(ODBC-Microsoft Visual FoxPro Driver)的步骤如下: 
打开ODBC配制窗口 -> 
选择“用户DSN”页面或“系统DSN”页面,建议用后者 -> 
点击“添加”按钮 -> 
选择“Microsoft Visual FoxPro Driver”这个驱动 -> 
在Data Source Name(数源源名称)处输入此数据源名称,可自定,本例如LjDbf,Database Type(数据库类型)处选择“Free Table directory”(自由表路径)
,然后在下面的Path(路径)处随便设置一个路径,本列如“D:” -> 
点击“OK”(确定)配制完成 -> 
关闭ODBC配制窗口 


2、通过SQL的导入导出数据(DTS)来把SQL表导成DBF表: 

开始 -> 
程序 -> 
Microsoft Sql Server-导入导出数(DTS)-> 
下一步 -> 
此步为“选择数据源”的窗口,“数据源”选"用于SQL Server的Microsoft OLE DB提供程序"(此项一般为默认),同时选择你要导出的SQL表所在数据库、服务器及服务器的验证方式,然后点击“下一步” -> 
此步为“选择目的”的窗口,“目的”选“Microsoft Visual FoxPro Driver”,同时在"用户/系统DSN"处选择你刚刚配制的数据源名(本例如LjDbf,当然上面配制数据源的过程也可以通过“用户/系统DSN”后面有一个“新建”按钮来完成),然后点击“下一步” -> 
这时: 
A:如果要把被导出的SQL表的全部字段均导出,则选择“从源数据库复制表和视图”,点击“下一步” -> 
选择要导出的表或视图,在‘目的’处可修改生成的DBF表的名称,默认与SQL表名一样,点击“下一步” -> 
再点击“下一步” -> 
最后点击“完成”进行导出即可(导出成功与否DTS会有提示),导出成功之后的DBF表的主文件名与SQL的表名一样。 

B:如果只导出SQL表中的几个字段或全部字段(如果导出全部字段,也可以用上面步骤A,结果是一样的,只是方法不同),则选择“用一条查询指定要输出的数据”,点击“下一步” -> 
点击“查询生成器”,选择要导出的SQL表(此时可选择列),点击“下一步” -> 
指定排序顺序,选一个或多个排序字段,如果不用排序,此步可略,点击“下一步” -> 
此步可以指定查询条件,如果没有条件,此步可略,点击“下一步” -> 
出现了对应的SQL语句(也可以再修改生成的SQL语句,但不推荐),再点击“下一步” -> 
这时可修改要生成的DBF表名,默认为“结果”,再点击“下一步” -> 
再点击“下一步” -> 
最后点击“完成”进行导出即可(导出成功与否DTS会有提示)。 

注: 
导出成功后,DBF文件一般存于 Microsoft Sql Server80ToolsBinn 或 Program FilesCommon FilesODBCData Sources目录下,并没有存于上面所说的D:,这个我也不知为什么,哪位如果知道,请告之。 





oConnection = Createobject("adodb.connection") 
With oConnection 
.ConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:;Extended Properties=dbase 5.0;Persist Security Info=False' 
.Open 
Endwith 
TEXT To lcStr Noshow 
Select * Into 要生成的DBF表名 From Sql表名 in [odbc] [ODBC;Driver=SQL Server;UID=sa;PWD=;Server=计算机名;DataBase=数据库名] 
Endtext 
oConnection.EXECUTE(lcStr) 
oConnection.Close

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DBF文件是一种常见的数据库文件格式,它经常用于存储格数据。将DBF文件导入SQL Server数据库可以通过以下步骤完成: 1. 在SQL Server Management Studio创建一个新的数据库,或选择要导入DBF数据的现有数据库。 2. 在SQL Server Management Studio打开“任务”菜单,并选择“导入数据”。 3. 在“导入导出向导”对话框,选择要导入数据的源。在这里选择“Microsoft Access(Microsoft Jet Database Engine)”。 4. 点击“浏览”按钮,选择要导入DBF文件。 5. 在“源”页,提供DBF文件的正确连接字符串信息。可以使用默认的提供程序选项。 6. 在“目标”页,选择将数据导入的目标数据库和。 7. 在“源和目标关系”页,可以选择设置字段映射和数据转换规则,以确保导入的数据符合目标数据库的要求。 8. 在“完成”页,查看导入操作的摘要,并根据需要选择保存导入操作的设置。 9. 单击“完成”按钮,开始将DBF数据导入SQL Server数据库。 在导入过程,可以根据需要进行进一步的设置和修改。导入完成后,可以在SQL Server数据库使用所导入的数据进行查询和分析。 需要注意的是,导入DBF文件SQL Server数据库时,应确保DBF文件的结构与目标数据库的结构相匹配,以确保数据的正确性和完整性。另外,也可以使用其他工具或编程语言来完成DBF文件SQL Server导入过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值