原来使用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

注:SQL 2008缺省安装中没有foxpro的数据适配器,下载地址:http://www.microsoft.com/downloads/en/details.aspx?FamilyId=E1A87D8F-2D58-491F-A0FA-95A3289C5FD4&displaylang=en
 

[转载]在SQL Server 中,如何实现DBF文件和SQL Server表之间的导入或者导出?的更多相关文章

  1. SQL Server2012中如何通过bak文件还原SQL Server2012数据库

    1 登陆完数据库后,不要新建数据库,直接点击“数据库”然后右击"还原数据库". 2 在"源"选项中选择"设备". 3 选择相应的bak文件并 ...

  2. 转载:SQL Server中查询CPU占用高的SQL语句

    SQL Server中查询CPU占用高的SQL语句 SQL Server 表变量的用法 究竟什么是敏捷测试--朱少民

  3. SQL Server中Table字典数据的查询SQL示例代码

    SQL Server中Table字典数据的查询SQL示例代码 前言 在数据库系统原理与设计(第3版)教科书中这样写道: 数据库包含4类数据: 1.用户数据 2.元数据 3.索引 4.应用元数据 其中, ...

  4. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  5. sql 语句中定义的变量不能和 sql关键字冲突

    sql 语句中定义的变量不能和 sql关键字冲突 from bs_email_account account LEFT JOIN bs_group_info gp ON account.group_i ...

  6. SQL Azure (14) 将云端SQL Azure中的数据库备份到本地SQL Server

    <Windows Azure Platform 系列文章目录> 注意: 1.只有SQL Server 2012 CU4及以上版本才支持本章内容 2.当你的数据库文件很大时,建议优化以下内容 ...

  7. 在64位SQL Server中创建Oracle的链接服务器 Link Server

    有时候我们希望在一个sqlserver下访问另一个sqlserver数据库上的数据,或者访问其他oracle数据库上的数据,要想完成这些操作,我们首要的是创建数据库链接. 数据库链接能够让本地的一个s ...

  8. SQL Server中查询CPU占用高的SQL语句

    SQL Server中查询CPU占用高的情况,会用到sys.sysprocesses ,dm_exec_sessions ,dm_exec_requests 一.查看当前的数据库用户连接有多少 USE ...

  9. 问题:PLS-00204: 函数或伪列 'EXISTS' 只能在 SQL 语句中使用;结果:PL/SQL中不能用exists函数?

    怎么写了一个语句带出这样的结果. 语句: if exists (select * from sysdatabases where name='omni') then 结果: ERROR 位于第 4 行 ...

随机推荐

  1. JavaScript 基础第七天(DOM的开始)

    一.引言 JavaScript的内容分为三个部分,这三个部分分别是ECMAScript.DOM.BOM三个部分组成.所谓ECMAScript就是JavaScript和核心基础语法,DOM是文档对象模型 ...

  2. 【转载】CentOS6.5_X64下安装配置MongoDB数据库

    [转载]CentOS6.5_X64下安装配置MongoDB数据库 2014-05-16 10:07:09|  分类: 默认分类|举报|字号 订阅      下载LOFTER客户端 本文转载自zhm&l ...

  3. ABP框架详解(六)Aspects

    这种AOP式的设计非常类似于Asp.net MVC和WebApi中过滤器(Filter)机制,感觉没有太多可讲述的,只能谈谈设计思路. 框架中AspectAttribute特性用于设置到需要被拦截的T ...

  4. linux的一些小问题

    1.需要使用root权限时提示xxx is not sudoers.... 1).root用户下输入visudo 2).在打开的文件中找到 root ALL=(ALL) ALL,以xxx为用户名,添加 ...

  5. [ASE]项目介绍及项目跟进——TANK BATTLE·INFINITE

    童年的记忆,大概是每周末和小伙伴们围坐在电视机前,在20来寸的电视机屏幕里守卫着这个至今都不知道是什么的白色大鸟. 当年被打爆的坦克数量估计也能绕地球个三两圈了吧. 十几年过去了,游戏从2D-3D,画 ...

  6. 网易云信,发送验证码短信C#版代码

    网易云信发送短信代码(C# 版)....需要注意SHA1 String有转换小写!!!! using System; using System.Collections.Generic; using S ...

  7. JS、LUA都可以开发移动应用

    蓝色互动,大众点评.韩都衣舍.汉庭.携程旅游.华夏基金.中国农业银行等好多知名APP开发商,正在使用, 领先的快速移动应用开发平台 http://www.deviceone.net?00001 应用开 ...

  8. 面向对象架构模式之:领域模型(Domain Model)

    一:面向对象设计中最简单的部分与最难的部分 如果说事务脚本是 面向过程 的,那么领域模型就是 面向对象 的.面向对象的一个很重要的点就是:“把事情交给最适合的类去做”,即:“你得在一个个领域类之间跳转 ...

  9. CSDN CODE平台,中国版Github简要使用说明!(多图慎入)

    楼主说 以前一直看到别人在用github发布自己的代码,各种牛逼,各种羡慕嫉妒恨.最后终于受不了了,也去注册了一个,注册到没什么难度.然后就没有然后了... 完全看不懂,不知道怎么用. 一次偶然的机会 ...

  10. webservice4

    原理: 参考 http://lvwenwen.iteye.com/blog/1478236 客户端通过get请求可以得到wsdl文件,也就知道服务器提供的方法和参数了,然后客户端会通过webservi ...