转】DB2导入导出使用"|"作分隔符的问题
2012-09-12 15:43
603 查看
我们ETL开发人员在做数据装载时,发现如果使用“|”作为分隔符,无论是export还是load,DB2都会报
SQL3017N的错误。
SQL3017N A delimiter is not valid or is used more than once.
SQL3017N错误的产生,原因如下(摘自官方文档):
对于“定界”ASCII (DEL) 文件,发生以下两种错误之一:
对列定界符、字符串定界符或小数点字符指定的字符无效。
对于 SBCS 或 UTF-8 数据,定界符的有效范围是 0×00 – 0x7F(包括 0×00 和 0x7F 在内)。
对于 MBCS 数据,定界符的有效范围是 0×00 – 0x3F(包括 0×00 和 0x3F 在内)。
对于 EBCDIC MBCS 数据,定界符的有效范围是 0×00 – 0x3F(包括 0×00 和 0x3F 在内),但是,有一种
例外情况就是,定界符不能为 SHIFT-OUT(0x0E)或者 SHIFT-IN(0x0F)字符。
为多个前述项目指定了同一个字符。
经过查询,我们数据库的字符集是1386,属于MBCS数据,因此定界符最大是0x3F,而“|”的ASCII码为0x7C,
超过了有效范围。解决办法,是做Export或者Load操作时,增加codepage选项,让DB2自动进行字符集转换:
EXPORT TO "/data/temp/card.dat" OF DEL
MODIFIED BY codepage=1208 COLDEL|
MESSAGES "/data/temp/card.log"
SELECT * FROM BI.STG_CDR_OBS_CARD
LOAD CLIENT FROM "/data/temp/card.dat" OF DEL
MODIFIED BY CODEPAGE=1208 COLDEL|
MESSAGES "/data/temp/card.log"
INSERT INTO BI.STG_CDR_OBS_CARD
SQL3017N的错误。
SQL3017N A delimiter is not valid or is used more than once.
SQL3017N错误的产生,原因如下(摘自官方文档):
对于“定界”ASCII (DEL) 文件,发生以下两种错误之一:
对列定界符、字符串定界符或小数点字符指定的字符无效。
对于 SBCS 或 UTF-8 数据,定界符的有效范围是 0×00 – 0x7F(包括 0×00 和 0x7F 在内)。
对于 MBCS 数据,定界符的有效范围是 0×00 – 0x3F(包括 0×00 和 0x3F 在内)。
对于 EBCDIC MBCS 数据,定界符的有效范围是 0×00 – 0x3F(包括 0×00 和 0x3F 在内),但是,有一种
例外情况就是,定界符不能为 SHIFT-OUT(0x0E)或者 SHIFT-IN(0x0F)字符。
为多个前述项目指定了同一个字符。
经过查询,我们数据库的字符集是1386,属于MBCS数据,因此定界符最大是0x3F,而“|”的ASCII码为0x7C,
超过了有效范围。解决办法,是做Export或者Load操作时,增加codepage选项,让DB2自动进行字符集转换:
EXPORT TO "/data/temp/card.dat" OF DEL
MODIFIED BY codepage=1208 COLDEL|
MESSAGES "/data/temp/card.log"
SELECT * FROM BI.STG_CDR_OBS_CARD
LOAD CLIENT FROM "/data/temp/card.dat" OF DEL
MODIFIED BY CODEPAGE=1208 COLDEL|
MESSAGES "/data/temp/card.log"
INSERT INTO BI.STG_CDR_OBS_CARD
相关文章推荐
- 关于使用"/"来 dispatcherServlet 的url-pattern带来的问题
- "Outlook所使用的离线资料夹档案(.ost)是旧的副本````"的问题
- 使用微信SDK时,出现了 "operator new[](unsigned long)", referenced from:等问题的解决方法
- 使用百度地图2.9sdk Undefined symbols for architecture x86_64: "_NSBackgroundColorAttributeName", 问题解决方法
- C#使用.Net自带的MonthCalendar滚动年使日历的"日"显示不对的问题
- ADODB使用excel的"Cannot modify the design of table 'xxxx'. It is in a read-only database"的问题
- 使用<input type="text" value=<%=str%>>出现取值不全的问题
- sql-"无法删除数据库,因为该数据库当前正在使用"问题解决
- java使用"+"拼装sql和hql引起的效率问题
- 关于网上邻居"此工作组的服务器列表当前无法使用"问题.
- 导入js文件时,不使用".."或"~"
- phpStorm中的"unescaped xml character"问题
- "SQL Server不存在或访问被拒绝"问题的解决
- 学习使用"Django REST framework"打造RESTful API接口——第一节 quickstart
- 解决工程导入出现the currently displayed page contains invalid values"的问题
- 技巧: 使用truss、strace或ltrace诊断软件的"疑难杂症"
- 2003下从网页中把数据导出到excel时,碰到"Automation 服务器不能创建对象"的问题
- 解决oracle数据导入时的&参数化问题
- 【c++笔记七】教你使用"const类型的对象、成员函数"和"static类型的成员函数、变量"
- 教你快速掌握如何使用"Opatch"打补丁