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:\,这个我也不知为什么,哪位如果知道,请告之。

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隧道 -汇入/汇出数据 -报表设计及建立
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值