您的当前位置:首页正文

SQL数据导入导出大全

2022-08-09 来源:个人技术集锦
导入导出大全

******* 导出到excel

EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\emp1.xls -c -q -S\"GNETDATA/GNETDATA\" -U\"sa\" -P\"\"'

/*********** 导入Excel

select * from openrowset('MicroSoft.Jet.OleDB.4.0',

'Excel 5.0;HDR=yes;Database=c:\est.xls',sheet1$) -------------------------------------------------------- SELECT *

FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

'Data Source=\"c:\est.xls\";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions

SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+' ' 转换后的别名 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

'Data Source=\"c:\est.xls\";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions

/** 导入文本文件

EXEC master..xp_cmdshell 'bcp \"dbname..tablename\" in c:\\DT.txt -c -Sservername -第 1 页 共 10 页

Usa -Ppassword'

/** 导出文本文件

EXEC master..xp_cmdshell 'bcp \"dbname..tablename\" out c:\\DT.txt -c -Sservername -Usa -Ppassword' 或

EXEC master..xp_cmdshell 'bcp \"Select * from dbname..tablename\" queryout c:\\DT.txt -c -Sservername -Usa -Ppassword'

导出到TXT文本,用逗号分开

exec master..xp_cmdshell 'bcp \"库名..表名\" out \"d:\t.txt\" -c -t ,-U sa -P password'

BULK INSERT 库名..表名 FROM 'c:\est.txt' WITH (

FIELDTERMINATOR = ';', ROWTERMINATOR = '\\n' )

--/* dBase IV文件 select * from

第 2 页 共 10 页

OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'dBase IV;HDR=NO;IMEX=2;DATABASE=C:\\','select * from [客户资料4.dbf]') --*/

--/* dBase III文件 select * from

OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'dBase III;HDR=NO;IMEX=2;DATABASE=C:\\','select * from [客户资料3.dbf]') --*/

--/* FoxPro 数据库

select * from openrowset('MSDASQL',

'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\\', 'select * from [aa.DBF]') --*/

/**************导入DBF文件****************/ select * from openrowset('MSDASQL', 'Driver=Microsoft Visual FoxPro Driver; SourceDB=e:\\VFP98\\data; SourceType=DBF',

'select * from customer where country != \"USA\" order by country') go

第 3 页 共 10 页

/***************** 导出到DBF ***************/

如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句

insert into openrowset('MSDASQL',

'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\\', 'select * from [aa.DBF]') select * from 表 说明:

SourceDB=c:\\ 指定foxpro表所在的文件夹 aa.DBF 指定foxpro表的文件名.

/*************导出到Access********************/ insert into openrowset('Microsoft.Jet.OLEDB.4.0', 'x:\\A.mdb';'admin';'',A表) select * from 数据库名..B表

/*************导入Access********************/

insert into B表 selet * from openrowset('Microsoft.Jet.OLEDB.4.0', 'x:\\A.mdb';'admin';'',A表)

第 4 页 共 10 页

Top

回复人: txlicenhe(马可) ( ) 信誉:167 2003-10-10 18:52:32Z 得分:0

********************* 导入 xml 文件

DECLARE @idoc int

DECLARE @doc varchar(1000) --sample XML document SET @doc ='

Customer was very satisfied

第 5 页 共 10 页

Important Happy Customer.

'

-- Create an internal representation of the XML document. EXEC sp_xml_preparedocument @idoc OUTPUT, @doc

-- Execute a SELECT statement using OPENXML rowset provider. SELECT *

FROM OPENXML (@idoc, '/root/Customer/Order', 1) WITH (oid char(5), amount float, comment ntext 'text()') EXEC sp_xml_removedocument @idoc

第 6 页 共 10 页

Top

回复人: txlicenhe(马可) ( ) 信誉:167 2003-10-10 18:54:30Z 得分:0 邹健的

/********************导整个数据库*********************************************/

用bcp实现的存储过程 /*

实现数据导入/导出的存储过程

根据不同的参数,可以实现导入/导出整个数据库/单个表 调用示例: --导出调用示例 ----导出单个表

exec file2table 'zj','','','xzkh_sa..地区资料','c:\\zj.txt',1 ----导出整个数据库

exec file2table 'zj','','','xzkh_sa','C:\\docman',1

第 7 页 共 10 页

--导入调用示例 ----导入单个表

exec file2table 'zj','','','xzkh_sa..地区资料','c:\\zj.txt',0 ----导入整个数据库

exec file2table 'zj','','','xzkh_sa','C:\\docman',0 */

if exists(select 1 from sysobjects where name='File2Table' and objectproperty(id,'IsProcedure')=1)

drop procedure File2Table go

create procedure File2Table

@servername varchar(200)--服务器名

,@username varchar(200)--用户名,如果用NT验证方式,则为空'' ,@password varchar(200)--密码

,@tbname varchar(500)--数据库.dbo.表名,如果不指定:.dbo.表名,则导出数据库的所有用户表

,@filename varchar(1000)--导入/导出路径/文件名,如果@tbname参数指明是导出整个数据库,则这个参数是文件存放路径,文件名自动用表名.txt ,@isout bit--1为导出,0为导入 as

declare @sql varchar(8000)

第 8 页 共 10 页

if @tbname like '%.%.%' --如果指定了表名,则直接导出单个表 begin

set @sql='bcp '+@tbname

+case when @isout=1 then ' out ' else ' in ' end +' \"'+@filename+'\" /w' +' /S '+@servername

+case when isnull(@username,'')='' then '' else ' /U '+@username end +' /P '+isnull(@password,'') exec master..xp_cmdshell @sql end else

begin--导出整个数据库,定义游标,取出所有的用户表 declare @m_tbname varchar(250)

if right(@filename,1)<>'\\' set @filename=@filename+'\\'

set @m_tbname='declare #tb cursor for select name from '+@tbname+'..sysobjects where xtype=''U''' exec(@m_tbname) open #tb

fetch next from #tb into @m_tbname while @@fetch_status=0 begin

set @sql='bcp '+@tbname+'..'+@m_tbname

第 9 页 共 10 页

+case when @isout=1 then ' out ' else ' in ' end +' \"'+@filename+@m_tbname+'.txt \" /w' +' /S '+@servername

+case when isnull(@username,'')='' then '' else ' /U '+@username end +' /P '+isnull(@password,'') exec master..xp_cmdshell @sql fetch next from #tb into @m_tbname end close #tb deallocate #tb end go

第 10 页 共 10 页

因篇幅问题不能全部显示,请点此查看更多更全内容