您的位置:首页 > 数据库

excel导入数据并做字符分割处理

2018-02-27 11:54 477 查看
前言 :数据入库时遇到之前没有处理过的操作。在这里记录。

1.将excel表的数据导入。

流程很简单,直接放图

1.1 导入入口:



1.2 选择excel 路径



1.3 选择并连接DB



1.4 选择目标表



1.5 完成



小结:主要步骤就完了。我这里将数据导入的是中间表,因为在excel表中的数据类型与最终目标的表字段类型有差异,所以最后用insert into * select 的方式将数据insert到最终表。

2.将a表的字符串拆分,关联b 表id查询并将关键字段插进c表。

--定义函数 做字符分割
Create FUNCTION [dbo].[F_Split]
(
@SplitString nvarchar(max),  --源字符串
@Separator nvarchar(10)=' '  --分隔符号,默认为空格
)
RETURNS @SplitStringsTable TABLE  --输出的数据表
(
[id] int identity(1,1),
[value] nvarchar(max)
)
AS
BEGIN
DECLARE @CurrentIndex int;
DECLARE @NextIndex int;
DECLARE @ReturnText nvarchar(max);

SELECT @CurrentIndex=1;
WHILE(@CurrentIndex<=len(@SplitString))
BEGIN
SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex);
IF(@NextIndex=0 OR @NextIndex IS NULL)
SELECT @NextIndex=len(@SplitString)+1;
SELECT @ReturnText=substring(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex);
INSERT INTO @SplitStringsTable([value]) VALUES(@ReturnText);
SELECT @CurrentIndex=@NextIndex+1;
END
RETURN;
END
GO

--数据交叉查询并插入新表
insert into dbo.T_WH_Maintain(SiteID,MaintainUser,State)
select a.ID,cc.userid,1 from T_WH_Station a
cross apply (select * from F_Split(a.MaintainPerson,',') where value<>'荆州应急接单专用') as bb
join T_Sys_Public_Userinfo cc on cc.realityName=bb.value


sql字符分割参考:https://www.cnblogs.com/xx2oo8/p/7000728.html

小结:有些方法不经常用就遗忘了。cross apply交叉查询。pivot 行列旋转并聚合。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息