全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

怎么向VFP数据表中一次加入多条记录?

发布时间:2023-10-14 00:47:12
发布人:xqq

一、怎么向VFP数据表中一次加入多条记录

以下均以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’)

–需要安装Visual FoxPro ODBC Driver(驱动下载:http://msdn2.microsoft.com/zh-cn/vfoxpro/Bb190233.aspx)

–方法二:有一个缺点:把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文件名

*/

延伸阅读:

二、行式数据库与列式数据库应用场景

行式更适合OLTP,比如传统的基于增删改查操作的应用。列式更适合OLAP,非常适合于在数据仓库领域发挥作用,比如数据分析、海量存储和商业智能;涉及不经常更新的数据。

由于设计上的不同,列式数据库在并行查询处理和压缩上更有优势。而且数据是以列为单元存储,完全不用考虑数据建模或者说建模更简单了。要查询计算哪些列上的数据,直接读取列就行。

最后我们需要务实的指出,没有使用广泛的数据库,列式数据库也并非使用广泛,只不过给DBA提供了更多的选择,DBA需根据自己的应用场景自行选择。

#it技术干货

相关文章

箭头函数和普通函数有什么区别?

箭头函数和普通函数有什么区别?

2023-10-14
RAM在单片机里究竟有什么用?

RAM在单片机里究竟有什么用?

2023-10-14
CPU的几个重要参数是指什么?

CPU的几个重要参数是指什么?

2023-10-14
中断函数里为什么不能调用printf?

中断函数里为什么不能调用printf?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取