设为首页 收藏本站
查看: 539|回复: 0

[经验分享] DBF表与SQL Server表的导入、导出(转载)

[复制链接]

尚未签到

发表于 2016-11-4 01:08:53 | 显示全部楼层 |阅读模式
  以下均以SQL2000、VFP6及以上的表为例
  
代码导入:查询分析器中执行如下语句(先选择对应的数据库)
  -------------如果接受导入数据的SQL表已存在
  --如果接受导入数据的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:,这个我也不知为什么,哪位如果知道,请告之。
  
 
  
  *!* 以下转自 wwwwb
*!* 以下是用VFP+ADO+JET SQL实现在不同的数据库系统之间自由转换,生成的DBF用VFP打开,
*!* 修改字段长度即可。
*!* 注意:不同的数据库系统有不同的字段类型、长度等等,特殊字段不能转换,如
*!* IMAGE、TEXT等等,要手工转换。
  
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
  
  本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/laishean/archive/2009/03/27/4030902.aspx

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-295246-1-1.html 上篇帖子: 处理SQL server 2000 SP4补丁打不上的问题 下篇帖子: SQL server 时间转化成字符串(转载)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表