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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |