美文网首页程序员
EXCEL/CSV直接导入SQLserver出现数据截断

EXCEL/CSV直接导入SQLserver出现数据截断

作者: 喂_有只喵在看你 | 来源:发表于2019-08-02 16:09 被阅读0次

问题描述


        将【EXCEL类型文件/CSV平面文件】直接导入SQLserver时遇到字符串截断

        数据文件:包括超长超链接列和8列普通统计数据,数据量约为49000条

        实现方式:SQLserver图形用户界面

        报错信息

        错误 0xc020901c: 数据流任务 1: 输出“Excel 源输出”(9) 上的 输出列“PAGEPATH”(15) 出错。返回的列状态是:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项。”。 (SQL Server 导入和导出向导)

        错误 0xc020902a: 数据流任务 1: “输出列“PAGEPATH”(15)”由于发生截断而失败,而且针对“输出列“PAGEPATH”(15)”的截断行处理设置指定截断时出错。在指定组件的指定对象上出现截断错误。 (SQL Server 导入和导出向导)

        错误 0xc0047038: 数据流任务  SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED 。组件“源 - Sheet1$”(1) 的 Prime Output 方法返回了错误代码 0xC020902A。管道引擎调用 PrimeOutput() 时该组件返回了一个失败代码。虽然该失败代码只与该组件有关,但这个错误是致命的,管道已停止执行。可能在此之前已经发出错误消息,提供了有关失败的详细信息。 (SQL Server 导入和导出向导)

解决方法


        1.将数据较大的列空间大小设置成为MAX

           解释说明:错误中明确指出,文本被截断,说明数据表中所预留的空间不够,因而需要在数据表进行匹配的时,将数据较大的列设置成为MAX大小

        2.需要在第一列伪造一行较大数据,使SQLserver分配较多空间给该列。

           解释说明:在将列空间大小设置成为MAX大小后,仍然出现上述问题。因为SQLserver会根据首行数据大小分配该列大小,因而需要在第一列伪造一行较大数据,时SQLserver分配较多空间给该列

        3.及时刷新数据库

          解释说明:在遇到导入时表格属性无法调整时,可能时上次导入失败后没有将上次导入创建的数据表删除,因而无法对表结构进行调整。需要及时刷新数据库

闲言碎语


        从没想过简书第一篇文章是爬SQLserver的坑。作为从远古的本科时代首次接触的关系型数据库软件,SQLserver因为硕士时期使用了矿用激光测距仪成功地再次在我的电脑圈地占领。作为数据分析方面的菜鸟,他只能成为我最为熟悉的处理多维数据生成多种报表的依靠。

        工作后的第一项任务是从GA抓数据,进行分析无奈GA限制每个用户每100秒的访问量,限制每个用户每天的数据获取量。需要从学校那里薅羊毛才能连上外网的我,选择了简单粗暴有效而快捷的方式,从GA的图形用户界面每5000条每5000条的抓数据。。。

相关思考


        数据库还是有很多坑,尤其还是2008版本的。嗯,还是学习下PYTHON 里面pandas的用法,写一个相对自动化的代码出来。按照写代码的方式进行处理会好一些

相关文章

网友评论

    本文标题:EXCEL/CSV直接导入SQLserver出现数据截断

    本文链接:https://www.haomeiwen.com/subject/rhpcrctx.html