ITPub博客

首页 > 数据库 > > 解决编写导入dBase存储过程的遇到的问题

解决编写导入dBase存储过程的遇到的问题

作者:gaokeke123 时间:2022-03-23 15:17:07 0 删除 编辑

从dBase文件中,导入数据到SQL数据库中,很简单,直接用下面的语句:

/*===================================================================*/
--如果接受数据导入的表已经存在
insert into 表 select * from 
openrowset('MICROSOFT.JET.OLEDB.4.0'
,'dBase 5.0;DATABASE=c:\','select * from [test.dbf]')

--如果导入数据并生成表
select * into 表 from 
openrowset('MICROSOFT.JET.OLEDB.4.0'
,'dBase 5.0;DATABASE=c:\','select * from [test.dbf]')

编写了一个存储过程遇到了问题:
异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。这将确保一致的查询语义。请启用这些选项,然后重新发出查询。
到csdn找到了解决的贴子
http://community.csdn.net/Expert/topic/3076/3076451.xml?temp=7.546633E-02

最终的通用导入的dBase的存储过程:(在查询分析器运行)
set ANSI_Nulls on
set ANSI_warnings On
go
if exists (select name from sysobjects where type='p' and name='ImportdBase')
drop PROCEDURE ImportdBase
go
CREATE PROCEDURE ImportdBase @path varchar(10),@fname varchar(10) AS
declare @sql varchar(200)
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'tempdbf')
drop table tempdbf
set @sql='select * into tempdbf'
set @sql=@sql+' from openrowset(“MICROSOFT.JET.OLEDB.4.0“,”dBase 5.0;DATABASE='+@path+'“,”select  * from ['+@fname+']'“)'
exec(@sql)
select * from tempdbf
GO

转载于:https://www.cnblogs.com/wyq2004/archive/2004/08/11/32366.html

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26692020/viewspace-3167262/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
大家好

注册时间:2013-08-14

  • 博文量
    1432
  • 访问量
    31734