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

2022-03-23 00:00:00 查询 数据 专区 订阅 导入

从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

相关文章