|
代码实现数据库转换[sql2000 VS DBF格式](1)
这里,就SqlServer,DBF两种格式的转化问题做个总结。 一: 从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]') /*===================================================================*/ --如果从SQL数据库中,导出数据到dBase,如果dBase文件已经存在,就可以简单的用: insert into openrowset('MICROSOFT.JET.OLEDB.4.0' ,'dBase 5.0;DATABASE=c:\','select * from [test.dbf]') select * from 表 /*--说明: DATABASE=c:\ c:\是dbf文件的存放目录 'select * from [test.dbf] test.dbf是指dbf文件名 --*/ 二 如果dBase文件不存在,就需要用到下面的存储过程了. /*--数据导出dBase 导出表中的数据到dBase,如果文件不存在,将自动创建文件 基于通用性考虑,仅支持导出标准数据类型 --*/ /*--调用示例 --导出dBase p_eXPorttb @tbname='地区资料',@path='c:\',@over=0 --*/ if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[p_exporttb] GO create proc p_exporttb @tbname sysname, --要导出的表名 @path nvarchar(1000), --文件存放目录 @fname nvarchar(250)='', --文件名,默认为表名 @over bit=0 --是否覆盖已经存在的文件,如果不覆盖,则直接追加 as declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000) --参数检测 if isnull(@fname,'')='' set @fname=@tbname+'.dbf'
|