对未安装office,不支持excel各版本的数据库进行excel导入sqlserver

现在很多运营商越来越少自己部署服务器了,很多时候都是租用别的服务商的服务器,但这样就有很多麻烦事,比如数据库服务器没安装office,无法直接导入excel的内容

现在有一个稍微复杂点的办法来解决这个问题,而无需对服务器做任何部署变更,不用找服务商麻烦

第一步:将excel导入到本地数据库,因为一般来说,开发人员的环境是比较全的,一般都能导入,这个很简单

第二步:将导入的数据生成xml数据,这样,生成的xml数据就变成了纯文本,可以直接复制到目标服务器上进行处理

select * from 临时数据库 where 条件 order by 排序 for xml raw,root('r'),elements XSINIL

for xml raw 是让生成xml中,每条数据一个row节点,elements XSINIL是为了让null数据不被忽略

这样就可以得到一个很大的xml格式的纯文本了,需要注意的是,如果内容中有特殊符号,需要进行清除,否则解析xml会出错,例如ascii码小于32的字符,会生成1这样的字符,造成解析异常,这个需要自己处理

第三步:将xml解析成行列数据

declare @xml xml
declare @xml xml
set @xml = '复制的xml内容'
declare @handle int,@prepare int
exec @prepare = sp_xml_preparedocument @handle output,@xml
;with t as (
	select * from openxml(@handle,'/r',1)
),t1 as (
	select a.id as rowid,b.localname as columnname,convert(nvarchar(max),c.text) as val 
	from t a 
	left join t as b on b.parentid=a.id 
	left join t as c on c.parentid=b.id
	where a.parentid=0 and a.localname='row'
)
select row_number() over(order by rowid) as nid,*
into #t1
from t1 a
pivot(max(val) for columnname in (字段列表)) p

通过这种方式,就将xml数据导入到临时表#t1里了,然后就可以继续我们的操作了,不管是更新还是插入,或者作为依据进行其他操作

这里的字段列表就是第二步中的字段列表,例如:id,name,sex,state...

嗯,需要sqlserver2008以上版本吧,2005是否支持没测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文盲老顾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值