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