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_MACHINE/SOFTWARE/Microsoft/Jet/4.0/Engines/Excel

如果是:ACE引擎.
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Office/12.0/Access Connectivity Engine/Engines/Excel

 

下的TypeGuessRows 项的值设置为0

 

Windows server 2003 系统注册表中,JET项位于HKEY_LOCAL_MACHINE/SOFTWARE/MicrosoftWow64Node/下

 

原因是驱动默认情况下根据列的前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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Excel VBA与数据库整合应用范例精讲(书及范例源代码) 内容简介   《Excel VBA 数据库整合应用范例精讲》用180个实例介绍了利用Excel VBA来操作数据库(包括Access、SQL Server和FoxPro)的实用方法和技巧。   全书共11章。第1~6章是利用Excel VBA操作Access数据库的实例;第7~8章是利用Excel VBA操作SQL Server数据库和FoxPro数据库方法和技巧实例;第9~10章是将工作簿当作数据库以及将文本文件当作数据库进行操作的方法和技巧实例。第11章以一个具有较大使用价值的固定资产管理系统为案例,详细介绍Excel VBA开发管理系统的过程。每个实例分析透彻,代码完整,技巧全面,使用得心应手。 目录 第1章 动态创建Access数据库和数据表 实例1-1 利用DAO创建数据库和数据表 实例1-2 利用ADOX创建数据库和数据表 实例1-3 利用SQL语句创建数据库和数据表 实例1-4 在已有的数据库中创建数据表(DAO) 实例1-5 在已有的数据库中创建数据表(ADOX) 实例1-6 在已有的数据库中创建数据表(SQL,Command对象) 实例1-7 在已有的数据库中创建数据表(SQL,Recordset对象) 实例1-8 利用Access对象创建数据库和数据表 实例1-9 利用Access对象在已有的数据库中创建数据表 实例1-10 利用工作表数据创建数据表(ADOX) 实例1-11 利用工作表数据创建数据表(ADO+SQL) 实例1-12 利用工作表数据创建数据表(DAO) 实例1-13 利用已有的数据表创建新数据表(ADO) 实例1-14 利用已有的数据表创建新数据表(DAO) 实例1-15 利用已有的数据表创建新数据表(Access) 第2章 获取Access数据库信息 实例2-1 检查数据表是否存在(ADO) 实例2-2 检查数据表是否存在(ADOX) 实例2-3 检查数据表是否存在(DAO) 实例2-4 检查数据表是否存在(Access) 实例2-5 获取数据库中所有表的名称和类型(ADO) 实例2-6 获取数据库中所有表的名称和类型(ADOX) 实例2-7 获取数据库中所有的表名称(DAO) 实例2-8 获取数据库中所有数据表名称(ADO) 实例2-9 获取数据库中所有数据表名称(ADOX) 实例2-10 获取数据库中所有数据表名称(DAO) 实例2-11 获取数据库中所有数据表名称(Access) 实例2-12 检查某字段是否存在(ADO) 实例2-13 检查某字段是否存在(ADOX) 实例2-14 检查某字段是否存在(DAO) 实例2-15 检查某字段是否存在(Access) 实例2-16 获取数据库中某数据表的所有字段信息(ADO) 实例2-17 获取数据库中某数据表的所有字段信息(ADOX) 实例2-18 获取数据库中某数据表的所有字段信息(DAO) 实例2-19 获取数据库中某数据表的所有字段信息(Access) 实例2-20 获取数据库的所有查询信息(ADOX) 实例2-21 获取数据库的所有查询信息(DAO) 实例2-22 获取数据库的模式信息(OpenSchema) 实例2-23 获取表的创建日期和最后更新日期(ADOX) 实例2-24 获取表的创建日期和最后更新日期(DAO) 第3章 查询获取Access数据库记录数据 实例3-1 将数据库记录数据全部导入Excel工作表(ADO,之一) 实例3-2 将数据库记录数据全部导入Excel工作表(ADO,之二) 实例3-3 将数据库记录数据全部导入Excel工作表(ADO,之三) 实例3-4 将数据库记录数据全部导入Excel工作表(DAO,之一) 实例3-5 将数据库记录数据全部导入Excel工作表(DAO,之二) 实例3-6 将数据库记录数据全部导入Excel工作表(QueryTable集合) 实例3-7 将数据库的某些字段的记录数据导入Excel工作表(ADO) 实例3-8 将数据库的某些字段记录数据导入Excel工作表(DAO) 实例3-9 查询前面的若干条记录(全部字段)(TOP) 实例3-10 查询前面的若干条记录(部分字段)(TOP) 实例3-11 查询不重复的字段记录(DISTINCT) 实例3-12 利用Like运算符进行模糊查询 实例3-13 查询某一区间内的记录(BETWEEN) 实例3-14 查询存在于某个集合里面的记录(IN) 实例3-15 将查询结果进行排序(ORDER BY) 实例3-16 进行复杂条件的查询(WHERE) 实例3-17 利用合计函数进行查询(查询最大值和最小值) 实例3-18 利用合计函数进行查询(查询合计值和平均值) 实例3-19 将一个查询结果作为查询条件进行查询 实例3-20 将查询结果进行分组(GROUP BY) 实例3-21 将查询结果进行分组(HAVING) 实例3-22 通过计算列进行查询 实例3-23 使用IS NULL运算符进行查询 实例3-24 使用COUNT函数进行查询 实例3-25 使用FIRST函数与LAST函数查询第一条记录和最后一条记录的字段 实例3-26 使用Parameters参数动态查询记录(DAO):指定单个参数 实例3-27 使用Parameters参数动态查询记录(DAO):指定多个参数 实例3-28 使用Parameters参数动态查询记录(ADO):指定单个参数 实例3-29 使用Parameters参数动态查询记录(ADO):指定多个参数 实例3-30 使用别名查询数据库 实例3-31 将查询结果作为窗体控件的源数据 实例3-32 通过窗体控件查询浏览数据库记录 实例3-33 多表查询(WHERE连接) 实例3-34 多表查询(内连接INNER JOINT) 实例3-35 多表查询(左外连接LEFT OUTER JOINT) 实例3-36 多表查询(右外连接RIGHT OUTER JOINT) 实例3-37 多表查询(子查询WHERE,ANY,SOME) 实例3-38 多表查询(子查询EXISTS,NOT EXISTS) 实例3-39 从两个数据表中查询出都存在的记录 实例3-40 从两个数据表中查询出只存在于某个数据表的记录 实例3-41 将查询结果生成一个数据表 实例3-42 将查询结果保存为一个XML文件 实例3-43 利用工作表实现记录的分页显示 实例3-44 利用窗体实现记录的分页显示 第4章 编辑Access数据库数据 实例4-1 添加新记录(ADO+AddNew) 实例4-2 添加新记录(ADO+SQL) 实例4-3 添加新记录(DAO+AddNew) 实例4-4 添加新记录(DAO+SQL) 实例4-5 添加新记录(Access+SQL) 实例4-6 修改更新特定记录(ADO+SQL) 实例4-7 修改更新特定记录(DAO+SQL) 实例4-8 修改更新特定记录(Access+SQL) 实例4-9 修改更新全部记录(ADO+SQL) 实例4-10 修改更新全部记录(DAO+SQL) 实例4-11 修改更新全部记录(Access+SQL) 实例4-12 删除特定记录(ADO+SQL) 实例4-13 删除特定记录(DAO+SQL) 实例4-14 删除特定记录(Access+SQL) 实例4-15 删除全部记录(ADO+SQL) 实例4-16 删除全部记录(DAO+SQL) 实例4-17 删除全部记录(Access+SQL) 实例4-18 通过窗体编辑记录 第5章 将Excel工作表数据导入到Access数据库 实例5-1 将整个工作表数据都保存为新Access数据库(Access) 实例5-2 将工作表的某些区域数据保存为新Access数据库(Access) 实例5-3 将工作簿的所有工作表数据分别保存为不同的数据表(Access) 实例5-4 将多个工作簿的某个工作表数据汇总为新Access数据库(Access) 实例5-5 将多个工作簿的某个工作表数据保存为不同的数据表(Access) 实例5-6 将工作表数据保存到已有的Access数据库(循环方式)(ADO) 实例5-7 将工作表数据保存到已有的Access数据库(循环方式)(DAO) 实例5-8 将工作表数据保存到已有的Access数据库(数组方式)(ADO) 实例5-9 将工作表数据保存到已有的Access数据库(数组方式)(DAO) 实例5-10 将工作簿的所有工作表数据分别保存为不同的数据表(ADO) 实例5-11 将工作簿的所有工作表数据分别保存为不同的数据表(DAO) 第6章 操作Access数据表 实例6-1 打开数据库和数据表(GetObject函数) 实例6-2 打开数据库和数据表(CreateObject函数) 实例6-3 删除数据表(ADO) 实例6-4 删除数据表(ADOX) 实例6-5 删除数据表(DAO+DELETE) 实例6-6 删除数据表(DAO+SQL) 实例6-7 删除数据表(Access) 实例6-8 为数据表增加字段(ADO) 实例6-9 为数据表增加字段(ADOX) 实例6-10 为数据表增加字段(DAO) 实例6-11 为数据表增加字段(Access) 实例6-12 删除字段(ADO) 实例6-13 删除字段(ADOX) 实例6-14 删除字段(DAO) 实例6-15 删除字段(Access) 实例6-16 改变字段的类型(ADO) 实例6-17 改变字段的类型(DAO) 实例6-18 改变字段的类型(Access) 实例6-19 改变字段的长度(ADO) 实例6-20 改变字段的长度(DAO) 实例6-21 改变字段的长度(Access) 实例6-22 重命名数据表(Access) 实例6-23 复制数据表(Access) 实例6-24 复制数据表(ADO) 实例6-25 复制数据表(DAO) 实例6-26 通过窗体维护数据库 第7章 操作SQL Server数据库 实例7-1 判断SQL Server数据库是否存在(ADO) 实例7-2 检查数据表是否存在(ADOX) 实例7-3 创建新的SQL Server数据库和数据表(ADO) 实例7-4 在已有的SQL Server数据库中创建数据表(ADO) 实例7-5 从SQL Server数据库服务器中删除数据库(ADO) 实例7-6 从SQL Server数据库中删除数据表(ADO) 实例7-7 将SQL Server数据库中的数据导入Excel工作表(ADO) 实例7-8 将SQL Server数据库中的数据导入Excel工作表(DAO) 实例7-9 查询获取SQL Server数据库的数据(ADO) 实例7-10 查询获取SQL Server数据库的数据(DAO) 实例7-11 将工作表数据导入SQL Server数据库(ADO) 实例7-12 向SQL Server数据库中添加记录的一般方法 实例7-13 将SQL Server数据库转换为Access数据库 实例7-14 将Access数据库转换为SQL Server数据库 第8章 操作FoxPro数据库 实例8-1 将FoxPro数据库全部数据导入Excel工作表 实例8-2 查询获取FoxPro数据库数据 实例8-3 将Excel工作表数据保存到FoxPro数据库 实例8-4 判断FoxPro数据库的字段是否存在 实例8-5 获取FoxPro数据库的字段信息 第9章 将Excel工作簿当作数据库来操作 实例9-1 从工作簿的某个工作表中查询获取数据(ADO) 实例9-2 从工作簿的全部工作表中查询获取数据(ADO) 实例9-3 利用DAO从工作表中查询数据 实例9-4 查询其他工作簿的数据(ADO) 实例9-5 获取其他工作簿中的工作表名称清单(ADOX) 实例9-6 利用ADO对工作表数据进行多重排序 实例9-7 利用ADO按照字符的长度对数据进行排序 实例9-8 比较两张表,将两个表中相同的行数据抓取出来 实例9-9 比较两张表,将只存在于某个表中的行数据抓取出来 实例9-10 删除工作表数据区域内的所有空行 第10章 将文本文件当作数据库来操作 实例10-1 利用ADO导入文本文件的全部内容 实例10-2 利用DAO导入文本文件的全部内容 实例10-3 利用ADO导入文本文件的部分内容 实例10-4 利用DAO导入文本文件的部分内容 实例10-5 利用ADO获取文本文件的行数和列数 实例10-6 利用ADO将超过65536行的文本文件数据导入Excel工作表 实例10-7 将工作表全部数据保存为文本文件(SaveAs) 实例10-8 将工作表全部数据保存为文本文件(循环) 实例10-9 将数据库数据导出为文本文件 实例10-10 将文本文件保存为Access数据库(Access) 实例10-11 将文本文件保存为Access数据库(ADO+ADOX) 第11章 Excel VBA开发数据库管理系统 11.1 固定资产管理系统的总体设计 11.1.1 固定资产管理系统功能模块 11.1.2 固定资产管理系统数据库和数据表的设计 11.1.3 设计系统工作簿 11.1.4 设计系统的自定义菜单 11.1.5 引用对象库 11.2 系统管理模块设计 11.2.1 用户名和密码的保存 11.2.2 “用户登录”窗口结构设计 11.2.3 “用户登录”窗体程序代码设计 11.2.4 “修改用户名”窗体结构设计 11.2.5 “修改用户名”窗体的程序代码设计 11.2.6 “修改密码”窗体结构设计 11.2.7 “修改密码”窗体的程序代码设计 11.3 基础资料管理模块设计 11.4 固定资产日常管理模块设计 11.4.1 固定资产日常管理窗体的结构设计 11.4.2 固定资产日常管理窗体的程序代码设计 11.4.3 “固定资产查询”窗体的结构设计 11.4.4 “固定资产查询窗体”的程序代码设计 11.4.5 固定资产日常管理模块的应用 11.5 报表输出模块设计 11.5.1 固定资产折旧计算方法 11.5.2 生成固定资产卡片子模块的设计 11.5.3 生成统计报表子模块的设计 11.5.4 生成固定资产折旧表子模块的设计 11.5.5 编制折旧费用分配表子模块的设计 11.6 系统菜单转换模块的设计 11.6.1 恢复Excel系统菜单 11.6.2 恢复固定资产管理系统自定义菜单 11.7 为工作簿指定Open和BeforeClose事件 11.7.1 为工作簿指定Open事件 11.7.2 为工作簿指定BeforeClose事件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值