SQL Server数据导入与创建视图

数据导入

从kusto中导出了6万多条数据,打算导入到SQL Server中。对应的数据表已经建好,数据类型也都各自匹配,但是导入时依然遇到了许多问题。列举问题及解决方案如下,以为记录。

1.选择数据源导入时,提示未在本地计算机上注册“Microsoft.ACE.OLEDB.16.0”提供程序

需要下载相应版本的AccessDataEngine,可搜索下载。

2.导入过程中报错,提示文本被截断,或者一个或多个字符在目标代码页中没有匹配项”错误的解决

第一次碰到这个错误时,我试着把报错列在表中的文本大小改为MAX(vchar),再次导入后,还是会报错。后来了解到,SQL Server的导入数据时,为确定数据表的字段类型,取源文件的前8行来判别。如果前8条是长度少于255的字符串,则设成nvarchar(255) 类型,但如果Excel后面的记录中有长度超过255的,导入时就会出错。考虑到,表中列较多,为了防止其他列再次报错,就新建了一行,凡是文本类型,均复制很长的文本,再次导入就不会出错了。

创建视图

导入数据后,由于用到的只是其中一部分,就需要创建视图,做一次数据的筛选,将建立视图的脚本记录如下。(已将列名隐藏)

--以incidentid分组,筛选出modifieddate最新的
if exists(select * from sysobjects where id=OBJECT_ID(N'V_New') and objectproperty(id,N'IsView')=1)
drop view V_New       --删除视图
go
create view dbo.V_New   --创建视图
as
with tempTable as
(
    select row_number() over(partition by incidentid order by modifieddate desc) as rows, incidentId, ModifiedDate from incidents
)
select distinct c1, c2
substring(title, charindex('[',title)+1,charindex(']',title)-2) as type  --从title列中提取中括号中间的内容,charindex函数用来获取位置,substring则根据起始位置与长度截取数据
from tempTable om left join incidents i on om.IncidentId = i.IncidentId where om.rows = 1 and title like '[[]Co%' and RoutingId not like '%bcd' go

 

参考链接:

https://blog.csdn.net/qq_40155090/article/details/104041389 

https://www.cnblogs.com/qcqc/p/5645873.html

 

posted @ 2020-07-21 10:34  F君君  阅读(739)  评论(0编辑  收藏  举报