加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2020-12-12 02:22:35 所属栏目:MySql教程 来源:网络整理
导读:/**********************Excel导到Txt****************************************/? 想用? select?*?into?opendatasource(...)?from?opendatasource(...)? 实现将一个Excel文件内容导入到一个文本文件? 假设Excel中有两列,第一列为姓名,第二列为很行帐号(16
/**********************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?姓名,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’,’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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读