Excel导入数据库时出现的文本截断问题解决方案_mssql2008

问题
在把Excel导入到数据库中时,发生文本截断问题:即导入的数据每行只有一部分,原始的Excel数据为:
   
忽略错误
导入SQLServer2008过程中,如果源数据和目标数据类型不匹配会导入失败,所以导入数据时会忽略错误,这次导入题库也是,结果出现了这样的问题:
 
仔细观察你会发现,题目不完整,最长为25个汉字,很明显这是varchar(50)数据类型,但是源数据和目的数据明明都为文本类型。
不忽略错误
如果不忽略错误,导入数据最后一步会产生这样的问题:

复制代码 代码如下:

-正在执行(错误)
消息
错误0xc02020c5:数据流任务1:在将列“questionContent”(33)转换为列“questionContent”(119)时数据转换失败。转换操作返回状态值4和状态文本“文本被截断,或者一个或多个字符在目标代码页中没有匹配项。”。
(SQLServer导入和导出向导)
错误0xc020902a:数据流任务1:“输出列“questionContent”(119)”由于发生截断而失败,而且针对“输出列“questionContent”(119)”的截断行处理设置指定截断时出错。在指定组件的指定对象上出现截断错误。
(SQLServer导入和导出向导)
错误0xc0047022:数据流任务1:SSIS错误代码DTS_E_PROCESSINPUTFAILED。处理输入“数据转换输入”(92)时,组件“数据转换0-0”(91)的ProcessInput方法失败,错误代码为0xC020902A。标识的这个组件从ProcessInput方法返回了一个错误。虽然该错误是此组件特有的,但却是致命的,将导致数据流任务停止运行。可能在此之前已经发出错误消息,提供了有关失败的详细信息。
(SQLServer导入和导出向导)

解决方法
SQL语句
可以确定这个问题不是由数据类型不匹配引起,如何解决?既然通过界面方法不能完整导入,可以采用SQL语句的方式再试试:

复制代码 代码如下:

SELECT*INTO[MaKeSiExam].[dbo].[t_makesi_duoxuanti1]FROMOPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'DataSource=D:/考试系统/题库/2012年下半年马克思考试/马克思_多选题.xls;
ExtendedProperties=Excel8.0')...[Sheet1$]

前提
使用SQL语句的方法可能会产生两个错误:

复制代码 代码如下:

SQLServer阻止了对组件'AdHocDistributedQueries'的STATEMENT'OpenRowset/OpenDatasource'的访问,因为此组件已作为此服务器安全配置的一部分而被关闭
消息7399,级别16,状态1,第1行
链接服务器"(null)"的OLEDB访问接口"Microsoft.Jet.OLEDB.4.0"报错。提供程序未给出有关错误的任何信息。
消息7303,级别16,状态1,第1行
无法初始化链接服务器"(null)"的OLEDB访问接口"Microsoft.Jet.OLEDB.4.0"的数据源对象。

解决方法

复制代码 代码如下:

--启用AdHocDistributedQueries
execsp_configure'showadvancedoptions',1
reconfigure
execsp_configure'AdHocDistributedQueries',1
reconfigure

第二个问题,是因为Excel文件和SQLServer没在同一台机器,把Excel放到数据库所在机器上执行上述SQL语句即可,注意以上导入数据库的语句需要自建表,表字段数据类型为Excel中的数据类型。
导入完毕,可再关闭AdHocDistributedQueries

复制代码 代码如下:

--关闭AdHocDistributedQueries
execsp_configure'AdHocDistributedQueries',0
reconfigure
execsp_configure'showadvancedoptions',0
reconfigure

导入结果

时间: 2024-08-29 04:17:27

Excel导入数据库时出现的文本截断问题解决方案_mssql2008的相关文章

请问:用java代码把excel导入数据库时,出现问题

问题描述 请问:用java代码把excel导入数据库时,出现问题 按着这里的代码配置的http://www.cnblogs.com/zyw-205520/p/3762954.html 解决方案 猜测是两种可能,一个是你读取excel有问题,没有正确读取出内容,另一个可能就是插入数据库有问题,导致数据不能正确写入数据库.检查这两个地方,分隔检查 解决方案二: 究竟遇到什么问题了呢?是读不出还是写不进去?你的图和链接并不能说明你遇到的问题. 解决方案三: 应该是读取excel的值没有成功,建议看看e

Excel导入数据库的一个小问题,请教高手

问题描述 在将Excel导入数据库时,数据库里那一列是整型的,我是用Convert.ToInt16(myDrv[2].ToString().Trim())将Excel中的字符转化为整形.但是在Excel中写入时,如果写得不规范,会存成左上角带着绿色小三角的情况,这时就会产生导入异常.请问如何解决? 解决方案 解决方案二:用户可能的输入太多要么规范Excel,要么捕获异常,记录并做相应处理解决方案三:可是我不知道怎么捕获这个异常,总得有个异常码是吧?引用1楼的回复: 用户可能的输入太多要么规范Ex

oledb 连接串的格式-Excel导入数据库的 OleDb 连接串的格式,发生错误:找不到可安装的 ISAM。

问题描述 Excel导入数据库的 OleDb 连接串的格式,发生错误:找不到可安装的 ISAM. Excel导入数据库的 OleDb 连接串的格式,发生错误:找不到可安装的 ISAM. FILEname = "EXCEL" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + up[up.Length - 1]; File1.PostedFile.SaveAs(Server.MapPath(@"/exceltest/

PHP将Excel导入数据库及数据库数据导出至Excel的方法

         本文实例讲述了PHP将Excel导入数据库及数据库数据导出至Excel的方法.分享给大家供大家参考.具体实现方法如下:          一.导入           导入需要使用能读取Excel的组件,网上也有比较好的组件,这里分享我使用的:下载 提取码:vxyn.(注意两个文件有引用关系) ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 <?php //传入要导入的Excel的文件

异常-excel导入数据库下标越界问题

问题描述 excel导入数据库下标越界问题 我在导入前先查了一遍数据库,如果内容不同则添加,反之不添加 加了该方法后,出现了下标越界的情况,而之前不加判断时没有类似情况.一直没有找到问题,上来求助各位前辈,还望指点一二 代码块 异常为 到 pstmt.setString(1, paper.getpName()); 这里就放不进去 说越界 不知这里出现了什么问题 求助 解决方案 问题出在这里 我在 这个方法里面的连接conn 和 当前方法里面的 conn重名了 所以 无法进行判断 解决方案二: h

PHP将Excel导入数据库及数据库数据导出至Excel的方法_php技巧

本文实例讲述了PHP将Excel导入数据库及数据库数据导出至Excel的方法.分享给大家供大家参考.具体实现方法如下: 一.导入 导入需要使用能读取Excel的组件,网上也有比较好的组件,这里分享我使用的:下载  提取码:vxyn.(注意两个文件有引用关系) <?php //传入要导入的Excel的文件名 function import_to_DB($filename) { require_once'reader.php'; $data = new Spreadsheet_Excel_Reade

oracle11g-用imp导入数据库时,带有CLOB字段的表都导入不进去!

问题描述 用imp导入数据库时,带有CLOB字段的表都导入不进去! 我语句是这样写的:imp user/password@orcl file=? full=y;请问有什么问题!数据库 oracle11g

C#检索access数据库时如何将文本字段转换成数字

问题描述 C#检索access数据库时如何将文本字段转换成数字 检索的一个字段时文本类型,里面的内容包括:1000,还有一些具体的数字20,30, 50,如何在检索条件时,将文本类型装换成数字类型比较,检索出20和30呢? 解决方案 可以参考以下例子,table1.a为字符串,table2.b为数值 select a from Table1 where val(a) in (select b from Table2) or select a from Table1 where a in (sel

sql-SQL使用游标把excel导入数据库

问题描述 SQL使用游标把excel导入数据库 我现在有一个表,想把Excel中的十几万跳数据使用游标插入,中途要对excel中的数据进行判断操作,急啊~ 解决方案 我的建议是不要使用游标插入 否则会很慢 你可以先把excel中的数据全部倒入到数据库中 再用sql对数据进行处理