python dbf导入到sql_SQL数据库与dbf导入导出【转】

系统已经安装 vfpoledb,

单独执行:

select * from openrowset('VFPOLEDB.1','d:\';'admin';'','select 列1 from 表1')

时,可以正常。

insert into

openrowset('VFPOLEDB.1','d:\';'admin';'','select 列1 from 表1')

select 列1 from 表2

出错提示:

服务器: 消息 7301,级别 16,状态 2,行 1未

能从 OLE DB 提供程序 'VFPOLEDB.1' 获得所需的接口。

换成下面的:--------------------------------------------

insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase III;DATABASE=D:\','select BM from [yh.dbf]')

select BM from yht

则出现这个错误:

未能处理对象 'select BM from [yh.dbf]'。

OLE DB 提供程序'MICROSOFT.JET.OLEDB.4.0' 指出该对象中没有任何列。

参考:

/**************导入DBF文件****************/

select * from openrowset('MSDASQL',

'Driver=Microsoft Visual FoxPro Driver;

SourceDB=e:\VFP98\data;

SourceType=DBF',

'select * from customer where country != "USA" order by country')

go

/***************** 导出到DBF ***************/

如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句

insert into openrowset('MSDASQL',

'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\',

'select * from [aa.DBF]')

select * from 表

说明:

SourceDB=c:\ 指定foxpro表所在的文件夹

aa.DBF 指定foxpro表的文件名.

--注意:驱动名中不要有多余的空格。

insert into openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=D:\','select 列1 from [表2.DBF]')

select 列1

from 表2

导入导出

http://blog.csdn.net/zjcxc/archive/2003/12/29/20085.aspx

http://dev.csdn.net/develop/article/78/78132.shtm

----------DBF 导入 SQL Server表----------

以下均以SQL2000、VFP6及以上的表为例

方法一:查询分析器中执行如下语句(先选择对应的数据库)

--如果接受导入数据的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表不存在,导入时创建

--方法一:

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

--方法二:

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

--方法三:

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

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

--第三种方法有一个缺点:把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 字段1,字段2 from aa.DBF')

/*--说明:

SourceDB=c:\ c:\是dbf文件的存放目录

aa.DBF 是dbf文件名

--*/

路过

还不如直接用SQL的导入导出来得简单.

直接用SQL SERVER 的导入导出,在选择导出类别为DBASE5。0时,按下一步也出现错误??

MARK

----------DBF 导入 SQL Server表----------

以下均以SQL2000、VFP6及以上的表为例

方法一:查询分析器中执行如下语句(先选择对应的数据库)

--如果接受导入数据的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表不存在,导入时创建

--方式一:

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

--方式二:

select * INTO TEMP1 from openrowset('VFPOLEDB.1','C:\';'admin';'' ,'select * from dbf表名.DBF')

如果没有安装VFP,需要把vfpoledb.dll拷贝到SYSTEM目录下,并注册。

--方式三:

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

--方式四:

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

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

--第三种方式有一个缺点:把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 字段1,字段2 from aa.DBF')

/*--说明:

SourceDB=c:\ c:\是dbf文件的存放目录

aa.DBF 是dbf文件名

--*/

方法二:通过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会有提示)。

方法三:

先把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 Server\80\Tools\Binn 或 Program Files\Common Files\ODBC\Data Sources目录下,并没有存于上面所说的D:\,这个我也不知为什么,哪位如果知道,请告之。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Navicat for MySQL是一个强大的MySQL数据库管理和开发工具。Navicat为专业开发者提供了一套强大的足够尖端的工具,但它对于新用户仍然是易于学习。使用了极好的图形用户界面(GUI),可以让你用一种安全和更为容易的方式快速和容易地创建、组织、存取和共享信息。基于Windows平台,为MySQL量身订作,提供类似于MsSQL的用管理界面工具。此解决方案的出现,将解放PHP,J2EE等程序员以及数据库设计者、管理者的大脑,降低开发正本,为您带来更高的开发效率。用户可完全控制 MySQL 数据库和显示不同的管理资料,包括一个多功能的图形化管理用户和访问权限的管理工具,方便将数据从一个数据库到另一个数据库中(Local to Remote、Remote to Remote、Remote to Local),进行档案备份。 Navicat 支援 Unicode,以及本地或遥距 MySQL 伺服器多连线,用户可浏览数据库、建立和删除数据库、编辑数据、建立或执行 SQL queries、管理用户权限(安全设定)、将数据库备份/复原、汇入/汇出数据(支援 CSV, TXT, DBF 和 XML 档案种类)等。新版与任何 MySQL 5.0.x 伺服器版本兼容,支援 Triggers,以及BINARY VARBINARY/BIT数据种类等的风范。 Navicat for MySQL主要功能 -表单检视(新增) -虚拟群组(新增) -自动完码(新增) -排程工作结果自动传送电子邮件(新增) -查询、 检视及事件自动完码(新增) -报告可汇出成各种格式,PDF, Excel, HTML 等(新增) -超时自动重新连接到SQL服务器 -数据和结构同步 -导出注册文件以传送到另外的计算机 -新查询创建器--为不同的数据库创建查询 -查询参数 -SQL控制台 -建立查看 -SSH密钥 -Navicat支持所有MySQL版本 -SSH及HTTP隧道 -汇入/汇出数据 -报表设计及建立
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、付费专栏及课程。

余额充值