EXCEL长度超过255个字符导入SQL SERVER2005的方法

excel长度超过255个字符导入sql server2005的方法
[excel 源 [1]] 错误: 输出“excel 源输出”(9) 上的 输出列“description 3”(546) 出错。返回的列状态是:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项。”。

该列在excel中最长为308个字符,但是excel源中的外部列和输出列最多只能设为nvarchar(255),如果设定长度超过255,则出现警告,源列属性不匹配,执行也通不过。使用ntext类型也尝试过,不匹配。

我使用ado.net倒是把它倒入到数据库教程了,但是发现所有超过255的都被截断了。

原因分析:

   ado和ssis的excel源对数剧列的长度的判定存在问题。

解决方案一:

      把excel转换成csv格式,然后使用平面文件源导入数据库。

      需要注意两点:

      1、输出列长度需要手动修改。

      2、注意不同语言造成的unicode字符转换问题,必要时先切换系统语言,再作转换。

解决方案二:

     将注册表中

jet引擎.
hkey_local_machinesoftwaremicrosoftjet4.0enginesexcel

如果是:ace引擎.
hkey_local_machinesoftwaremicrosoftoffice12.0access connectivity engineenginesexcel

下的typeguessrows 项的值设置为0

windows server 2003 系统注册表中,jet项位于hkey_local_machinesoftwaremicrosoftwow64node下

原因是驱动默认情况下根据列的前8行数据判定列长度,修改为0后需要检查整列数据来判定列长度,超过255个字符默认为ntext格式,少于255个字符则默认为nvarchar(255)。

添加一个数据流.在数据流里.添加一个oledb源.

新建一个excel的oledb源.在这里就不说了.

只需要将provider设置为microsoft ace oledb.然后选择excel文件.

然后设置extended properties属性为excel 12.0;hdr=yes

解决方案三:

         使用函数将长度超过255个字符的列切割为多个少于255的列,导入数据库后在进行合并。

         注意excel的选择性粘贴功能。

        可用函数:left ,mid

经过我测试,通过!

下载注册表文件

select len(convert(varchar(1000),人员分工)),*  from opendatasource( 'microsoft.jet.oledb.4.0','data source="c:book1.xls";user id=admin;password=;extended properties=excel 5.0')...[sheet1$]order by len(人员分工) desc--select * from table1
select len(人员分工),* from openrowset('microsoft.jet.oledb.4.0', 'excel 8.0;hdr=yes;imex=1;database=c:book1.xls', 'select 人员分工,* from [sheet1$]') order by len(人员分工) descselect * from openrowset('microsoft.ace.oledb.12.0', 'excel 12.0;hdr=yes;imex=1;database=c:book1.xls', [sheet1$])  order by len(人员分工) desc
select len(人员分工),* from opendatasource('microsoft.ace.oledb.12.0', 'data source=c:book1.xls;extended properties="excel 12.0;hdr=yes;imex=0"')...[sheet1$]order by len(人员分工) desc

 

时间: 2024-07-30 10:52:12

EXCEL长度超过255个字符导入SQL SERVER2005的方法的相关文章

php生成excel列名超过26列大于Z时的解决方法_php技巧

本文实例讲述了php生成excel列名超过26列大于Z时的解决方法.分享给大家供大家参考.具体分析如下: 我们生成excel都会使用phpExcel类,这里就来给大家介绍在生成excel列名超过26列大于Z时的解决办法,这是phpExcel类中的方法,今天查到了,记录一下备忘,代码如下: 复制代码 代码如下: public static function stringFromColumnIndex($pColumnIndex = 0)  {          //  Using a lookup

动态执行超过4000个字符的SQL

sp_executesql 可能用 exec sp_executesql @sqltext,@paramstring,@urlM_ID output 来得到动态执行中返回值,@sqltext的长度可能超过了4000字符,可以使用nvarchar(max)解决,类似于: declare @request1 nvarchar(4000) declare @request2 nvarchar(4000) declare @request3 nvarchar(max) – Fill @request1

文本、Excel、Access数据导入SQL Server2000的方法_MsSql

如下所示: 复制代码 代码如下: "AWU","102300","ZX240-3","2609997000","2609997000","3016924000","","3091775000","","","QCR0000285","" "AYE",

在linux中导入sql文件的方法分享(使用命令行转移mysql数据库)_Mysql

因导出sql文件 在你原来的网站服务商处利用phpmyadmin导出数据库为sql文件,这个步骤大家都会,不赘述. 上传sql文件 前面说过了,我们没有在云主机上安装ftp,怎么上传呢? 打开ftp客户端软件,例如filezilla,使用服务器IP和root及密码,连接时一定要使用SFTP方式连接,这样才能连接到linux.注意,这种方法是不安全的,但我们这里没有ftp,如果要上传本地文件到服务器,没有更好更快的方法. 我们把database.sql上传到/tmp目录. 连接到linux,登录m

asp.net Excel转换为SQL Server的方法_实用技巧

1.功能分析 通过Microsoft.Jet.OLEDB.4.0方式可实现使用ADO.NET访问Excel的目的,如以下示例代码为连接Excel数据的字符串: 复制代码 代码如下: string strOdbcCon = @"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:\2010年图书销售情况.xls;Extended Properties=Excel 8.0"; 2.实施方法 程

PHPmyadmin如何在线导入*.sql文件,*.sql与sql.zip、gzip文件转换

如果是*.sql文件直接在后台在线一般无法导入,后台支持gzip, bzip2, *.sql.zip 那么我们要怎么导入*.sql文件   解决方法:首先在本地安装PHP组件,这里不说了 推荐使用wamp. 通过命令行进入到wampmysqlbin 目录下 然后执行以下命令导入*.sql   E:Webwampmysqlbin>mysql -u root -p b766951_apple < E:/1.sqlEnter password: ********  root是 phpmyadmin登

用Mysql命令导入sql数据备份的方法

下面是在命令行下导入sql数据的方法,需要的朋友可以参考下. 我的个人实践是:phpmyadmin 导出 utf-8 的 insert 模式的 abc.sql ftp abc.sql 到服务器 ssh 到服务器 mysql -u abc -p use KKK(数据库名,如果没有就 create database KKK) set names 'utf8' source abc.sql 注意:我看到 set character set utf8; 的说法,那样不行,中文乱码. 1.首先在命令行控制

C#,将excel导入sql 表里的时候,如何读取excel第一行标头的内容阿

问题描述 C#,将excel导入sql表里的时候,如何读取excel第一行标头的内容阿.也就是指定单元格的内容.谢谢 解决方案 解决方案二:http://www.cnblogs.com/GodSpeed/archive/2008/03/14/1105178.html解决方案三:如果仅需要读取标题信息的话可用使用OleDbConnection的GetSchema方法解决方案四:将excel作为数据库读取,加载到datatable里面,就可以取到表头了.解决方案五:能说详细点吗,我是新手.另,我已经

ASP.NETR把Excel导入SQL数据库的自定义类

ASP.NETR把Excel导入SQL数据库的自定义类 以下是引用片段:public class SaveToSql {   public string strNewCodeId = string.Empty;   public string strNewCode = string.Empty;   public string strNewDes = string.Empty;   public string strOldCodeId = string.Empty;   public strin