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

问题
在把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

导入结果

(0)

相关推荐

  • PHP 如何利用phpexcel导入数据库

    废话不多说,直接上代码吧 复制代码 代码如下: <?php error_reporting(E_ALL); //开启错误 set_time_limit(0); //脚本不超时 date_default_timezone_set('Europe/London'); //设置时间 /** Include path **/set_include_path(get_include_path() . PATH_SEPARATOR . 'http://www.jb51.net/../Classes/');/

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

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

  • Drupal读取Excel并导入数据库实例

    PHPExcel 是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言.可以使用它来读取.写入不同格式的电子表格,如 Excel (BIFF) .xls, Excel 2007 (OfficeOpenXML) .xlsx, CSV, Libre/OpenOffice Calc .ods, Gnumeric, PDF, HTML等等. 一.Drupal 通过Library 调用 PHPExcel将PHPExcel 下载后,上传到Drupal目录:si

  • asp实现excel中的数据导入数据库

    asp实现excel中的数据导入数据库 <% Response.CodePage=65001%> <% Response.Charset="UTF-8" %> <% wenjian = request.Form("select") '获取文件扩展名 ext = FileExec(wenjian) '判断文件扩展名 if ext <> "xls" then response.Write("<

  • C++ 中实现把EXCEL的数据导入数据库(ACCESS、MSSQL等)实例代码

    C++ 中实现把EXCEL的数据导入数据库(ACCESS.MSSQL等)实例代码 在把EXCEL的数据导入数据库之前,先进行一些简单的准备工作: 1.把数据所在的EXCEL表另保存为DBF 4格式. 2.打开BCB,添加AdoTable(改名为DBFTable)和DataSource这两个控件 OK,准备工作,到此结束,剩下的就是打代码了 1.在Form_Load()事件中,加入以下代码: AnsiString filepath=ExtractFilePath(FileName); //File

  • ASP.NET下将Excel表格中的数据规则的导入数据库思路分析及实现

    今天接到新的需求,要求将Excel表格中的数据显示在页面上. 我个人分析,首先要将Excel中的数据存到数据库中,再进行页面显示,本人菜鸟级别,以前没有做过读取Excel数据,研究了一下(主要是看别人的资料),写一下实现过程,我想写几篇关于Excel的,首先是规则的Excel数据导入,再有就是不规则的Excel数据导入,还有就是根据数据生成Excel. 下面开始:将规则的Excel导入数据库 首先看一下Excel结构,如图:  这是一个简单的.规整的Excel格式,将它导入到数据库中 复制代码

  • 利用phpexcel把excel导入数据库和数据库导出excel实现

    复制代码 代码如下: <?php/**author zhy*date 2012 06 12*for excel*/date_default_timezone_set("PRC"); error_reporting(E_ALL);error_reporting(0);ini_set('display_errors', TRUE);ini_set('display_startup_errors', TRUE);define('EOL',(PHP_SAPI == 'cli') ? PH

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

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

  • ThinkPHP 框架实现的读取excel导入数据库操作示例

    本文实例讲述了ThinkPHP 框架实现的读取excel导入数据库操作.分享给大家供大家参考,具体如下: 入口文件中: require_once VENDOR_PATH.'PHPExcel/PHPExcel/IOFactory.php'; require_once VENDOR_PATH.'PHPExcel/PHPExcel.php'; PHP: namespace Home\Controller; class ExcelController extends CommonController {

  • MYSQL数据库导入数据时出现乱码的解决办法

    首先在新建数据库时一定要注意生成原数据库相同的编码形式,如果已经生成可以用phpmyadmin等工具再整理一次,防止数据库编码和表的编码不统一造成乱码. 方法一: 通过增加参数 –default-character-set = utf8 解决乱码问题 mysql -u root -p password < path_to_import_file –default-character-set = utf8 方法二: 在命令行导入乱码解决 1. use database_name; 2. set n

  • C# 中Excel导入时判断是否被占用三种方法

    C# 中Excel导入时 判断是否被占用三种方法 Excel导入时 判断是否被占用,三种方法: 1:Win7可以,WIN10不可以 try { //原理,如果文件可以被移动,说明未被占用 string strPath = "C:\\123OK.Excel"; string strPath2 = "C:\\123OK22.Excel"; File.Move(strPath, strPath2); File.Move(strPath2, strPath); } catc

  • thinkPHP实现将excel导入到数据库中的方法

    本文实例讲述了thinkPHP实现将excel导入到数据库中的方法.分享给大家供大家参考,具体如下: PHPExcel插件可点击此处本站下载. 这里使用的是thinkphp框架的3.1版本,下载好压缩包,框架中的extend中的vendor文件夹中新建一个名为PHPExcel的文件夹,把classes里面的内容放到里面 下面是前端页面 提示:我在测试的时候遇到报错exception 'PHPExcel_Reader_Exception' with message 'The filename 原因

  • 使用phpexcel类实现excel导入mysql数据库功能(实例代码)

    下载phpexcel文件,地址:phpexcel.codeplex.com/ 代码示例 require_once 'phpexcel/Classes/PHPExcel.php'; require_once 'phpexcel/Classes/PHPExcel/IOFactory.php'; require_once 'phpexcel/Classes/PHPExcel/Reader/Excel5.php'; $objReader = PHPExcel_IOFactory::createReade

随机推荐