• 首页
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案
目录

怎么向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’)。

一、怎么向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需根据自己的应用场景自行选择。

相关文章