IT学习者 | 文章大全 | 技术文档 | 桌面壁纸 | 实用查询 | 网络电台 | 成语 | 歇后语 | 网址 | 下载 | 周公解梦 | 生日密码 | 电视剧365 | Flash
 您现在的位置: IT学习者 >> 文章大全 >> 网络编程 >> 数据库开发

SQL Server SQL语句导入导出大全(3)

【 来源:网络  更新时间:2005-4-6 | 字体:
/**********************Excel导到Txt****************************************/ 
想用 
select * into opendatasource(...) from opendatasource(...) 
实现将一个Excel文件内容导入到一个文本文件 

假设Excel中有两列,第一列为姓名,第二列为很行帐号(16位) 
且银行帐号导出到文本文件后分两部分,前8位和后8位分开。 

如果要用你上面的语句插入的话,文本文件必须存在,而且有一行:姓名,银行账号1,银行账号2 
然后就可以用下面的语句进行插入 
注意文件名和目录根据你的实际情况进行修改. 

insert into 
opendatasource(’MICROSOFT.JET.OLEDB.4.0’ 
,’Text;HDR=Yes;DATABASE=C:\’ 
)...[aa#txt] 
--,aa#txt) 
--*/ 
select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8) 
from 
opendatasource(’MICROSOFT.JET.OLEDB.4.0’ 
,’Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\a.xls’ 
--,Sheet1$) 
)...[Sheet1$] 

如果你想直接插入并生成文本文件,就要用bcp 

declare @sql varchar(8000),@tbname varchar(50) 

--首先将excel表内容导入到一个全局临时表 
select @tbname=’[##temp’+cast(newid() as varchar(40))+’]’ 
 ,@sql=’select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8) 
into ’+@tbname+’ from 
opendatasource(’’MICROSOFT.JET.OLEDB.4.0’’ 
,’’Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\a.xls’’ 
)...[Sheet1$]’ 
exec(@sql) 

--然后用bcp从全局临时表导出到文本文件 
set @sql=’bcp "’+@tbname+’" out "c:\aa.txt" /S"(local)" /P"" /c’ 
exec master..xp_cmdshell @sql 

--删除临时表 
exec(’drop table ’+@tbname) 

用bcp将文件导入导出到数据库的存储过程: 

/*--bcp-二进制文件的导入导出 

 支持image,text,ntext字段的导入/导出 
 image适合于二进制文件;text,ntext适合于文本数据文件 

 注意:导入时,将覆盖满足条件的所有行 
  导出时,将把所有满足条件的行也出到指定文件中 

 此存储过程仅用bcp实现 
邹建 2003.08-----------------*/ 

/*--调用示例 
--数据导出 
 exec p_binaryIO ’zj’,’’,’’,’acc_演示数据..tb’,’img’,’c:\zj1.dat’ 

--数据导出 
 exec p_binaryIO ’zj’,’’,’’,’acc_演示数据..tb’,’img’,’c:\zj1.dat’,’’,0 
--*/ 
if exists (select * from dbo.sysobjects where id = object_id(N’[dbo].[p_binaryIO]’) and OBJECTPROPERTY(id, N’IsProcedure’) = 1) 
drop procedure [dbo].[p_binaryIO] 
GO 

Create proc p_binaryIO 
@servename varchar (30),--服务器名称 
@username varchar (30), --用户名 
@password varchar (30), --密码 
@tbname varchar (500),  --数据库..表名 
@fdname varchar (30),  --字段名 
@fname varchar (1000), --目录+文件名,处理过程中要使用/覆盖:@filename+.bak 
@tj varchar (1000)=’’,  --处理条件.对于数据导入,如果条件中包含@fdname,请指定表名前缀 
@isout bit=1   --1导出((默认),0导入 
AS 
declare @fname_in varchar(1000) --bcp处理应答文件名 
 ,@fsize varchar(20)   --要处理的文件的大小 
 ,@m_tbname varchar(50)  --临时表名 
 ,@sql varchar(8000) 

--则取得导入文件的大小 
if @isout=1 
 set @fsize=’0’ 
else 
begin 
 create table #tb(可选名 varchar(20),大小 int 
  ,创建日期 varchar(10),创建时间 varchar(20) 
  ,上次写操作日期 varchar(10),上次写操作时间 varchar(20) 
  ,上次访问日期 varchar(10),上次访问时间 varchar(20),特性 int) 
 insert into #tb 
 exec master..xp_getfiledetails @fname 
 select @fsize=大小 from #tb 
 drop table #tb 
 if @fsize is null 
 begin 
  print ’文件未找到’ 
  return 
 end 

end
相 关 文 章
相 关 软 件
没有相关下载

音乐
画心 放生 天亮了 牡丹江 那滋味 擦肩而过 放手去爱 北京欢迎你 依然在一起 吻得太逼真 牵手的右前方 坐上火车去拉萨 如果爱能早些说出来
心碎 稻香 从新爱 别碰我 魔杰座 红楼梦中 为你而活 一定要爱你 等爱的玫瑰 失落非主流 越单纯越幸福 最后一次的温柔 孤独的时候可以抱你
光荣 火花 下雨天 小酒窝 樱花草 为你写诗 无可取代 无情的温柔 寂寞才说爱 忘不掉的伤 爱上你是个错 陪你一起看草原 地球人都知道我爱你
假如 相思 女儿红 有缘人 舍不得 我的答铃 如何是好 外滩十八号 我们的纪念 摇滚怎么了 和寂寞说分手 爱上你是我的错 爱情里没有谁对谁错
加入收藏留言建议自助友情链接普通友情链接站长的Blog
版权所有   COPYRIGHT 2002-2008 ★IT学习者★ ALL RIGHTS RESERVED.