| 207 | | == 导数据 == |
| 208 | | * 字符长度超长 |
| 209 | | {{{ |
| 210 | | [postgres@test740-10 ora2cyp]$ cat export.log |grep ERROR |
| 211 | | psql:ENT_COMPANY_WEB.sql:142: ERROR: value too long for type character varying(720) |
| 212 | | psql:ENT_NEWS_WEB.sql:19: ERROR: value too long for type character varying(500) |
| 213 | | 数据长度不对,有可能跟转为utf8 字符集,长度增加有关系,奇怪的是其他表不需要。 |
| 214 | | |
| 215 | | psql:ENT_QQ_CONTACT.sql:21: ERROR: bigint out of range |
| 216 | | 其中的qq 号明显有问题,修改字段类型,重新导入,建议开发对输入做限制。 |
| 217 | | |
| 218 | | psql:ENT_QUESTION.sql:1125: ERROR: value too long for type character varying(2000) |
| 219 | | ENT_REQUEST_ERROR.sql Tue Mar 13 21:19:13 CST 2012 |
| 220 | | psql:ENT_REQUEST_ERROR.sql:43: ERROR: value too long for type character varying(4000) |
| 221 | | psql:ENT_SYSLOG.sql:72: ERROR: value too long for type character varying(500) |
| 222 | | |
| 223 | | 数据长度不对,有可能跟转为utf8 字符集,长度增加有关系,奇怪的是其他表不需要。 |
| 224 | | |
| 225 | | ''' 后记 ''' |
| 226 | | |
| 227 | | 问题已经解决,主要原因出在我们在oracle 转pg过程中,对元字符进行了转义,导致导致原本只有站占一个字符的元字符变成了多个字符导致字段长度改变 |
| 228 | | 目前这个问题已经解决,已经通过了测试。 |
| 229 | | }}} |
| 230 | | |
| 231 | | * 字符编码问题,部分gbk了里的乱码,没有对应utf8编码,无法转入,需要人工干预。 http://bbs.pconline.cn/topic-1954.html |
| 232 | | {{{ |
| 233 | | '''后记''' |
| 234 | | 问题已经解决,采用xdb脚本来转数据。不在使用orapg 来转数据,只利用他来生成建库脚本。 |
| 235 | | |
| 236 | | }}} |
| 237 | | |
| 238 | | * oracle数据中的回车换行导到pg中的时候变成了\r\n |
| 239 | | {{{ |
| 240 | | '''后记''' |
| 241 | | 问题解决, 因为xdb脚本中针对元字符\r\n 的转义,导致\r\n 进入pg后变成两个字符,java页面显示为\r\n 而不在是控制字符。 |
| 242 | | 新版本的xdb 脚本已经解决这个问题,已经通过了测试。 |
| 243 | | }}} |
| 244 | | |
| 245 | | * ent_question 表 question_contact 字段存贮有二进制数据 |
| 246 | | {{{ |
| 247 | | question_contact 字段 存有二进制数据00 , 在文本下表现为可打印字段^@ (linux ctl+v+2) |
| 248 | | @ 在pg里是运算符导致问题? |
| 249 | | pg报错: ERROR: VALUES lists must all be the same length at character 16690 |
| 250 | | |
| 251 | | 初步查明,这些数据都为历史数据,新数据已经没有这个字段的输入了。 |
| 252 | | |
| 253 | | 详细描述: |
| 254 | | http://bbs.pconline.cn/topic-2164.html |
| 255 | | }}} |
| 256 | | |
| 257 | | * oracle中的number类型数据导入postgresql |
| 258 | | {{{ |
| 259 | | 用xdb 从oracle导出来的是文本,转入pg的时候,会发生自动转换 |
| 260 | | number类型导入到postgresql中会转为bigint类型,number(10,2)这样的会转为double类型,造成数据不一致 |
| 261 | | |
| 262 | | 解决方案:批量生成表结构,然后手工修正,修正的规则是 |
| 263 | | number类型的根据业务逻辑判断转换后的应该是bigint还是numeric(10,2) |
| 264 | | number(10,2)类型的转换为numeric(10,2) |
| 265 | | |
| 266 | | }}} |
| 267 | | |
| | 217 | |
| | 218 | == 导数据 == |
| | 219 | * 字符长度超长 |
| | 220 | {{{ |
| | 221 | [postgres@test740-10 ora2cyp]$ cat export.log |grep ERROR |
| | 222 | psql:ENT_COMPANY_WEB.sql:142: ERROR: value too long for type character varying(720) |
| | 223 | psql:ENT_NEWS_WEB.sql:19: ERROR: value too long for type character varying(500) |
| | 224 | 数据长度不对,有可能跟转为utf8 字符集,长度增加有关系,奇怪的是其他表不需要。 |
| | 225 | |
| | 226 | psql:ENT_QQ_CONTACT.sql:21: ERROR: bigint out of range |
| | 227 | 其中的qq 号明显有问题,修改字段类型,重新导入,建议开发对输入做限制。 |
| | 228 | |
| | 229 | psql:ENT_QUESTION.sql:1125: ERROR: value too long for type character varying(2000) |
| | 230 | ENT_REQUEST_ERROR.sql Tue Mar 13 21:19:13 CST 2012 |
| | 231 | psql:ENT_REQUEST_ERROR.sql:43: ERROR: value too long for type character varying(4000) |
| | 232 | psql:ENT_SYSLOG.sql:72: ERROR: value too long for type character varying(500) |
| | 233 | |
| | 234 | 数据长度不对,有可能跟转为utf8 字符集,长度增加有关系,奇怪的是其他表不需要。 |
| | 235 | |
| | 236 | ''' 后记 ''' |
| | 237 | |
| | 238 | 问题已经解决,主要原因出在我们在oracle 转pg过程中,对元字符进行了转义,导致导致原本只有站占一个字符的元字符变成了多个字符导致字段长度改变 |
| | 239 | 目前这个问题已经解决,已经通过了测试。 |
| | 240 | }}} |
| | 241 | |
| | 242 | * 字符编码问题,部分gbk了里的乱码,没有对应utf8编码,无法转入,需要人工干预。 http://bbs.pconline.cn/topic-1954.html |
| | 243 | {{{ |
| | 244 | '''后记''' |
| | 245 | 问题已经解决,采用xdb脚本来转数据。不在使用orapg 来转数据,只利用他来生成建库脚本。 |
| | 246 | |
| | 247 | }}} |
| | 248 | |
| | 249 | * oracle数据中的回车换行导到pg中的时候变成了\r\n |
| | 250 | {{{ |
| | 251 | '''后记''' |
| | 252 | 问题解决, 因为xdb脚本中针对元字符\r\n 的转义,导致\r\n 进入pg后变成两个字符,java页面显示为\r\n 而不在是控制字符。 |
| | 253 | 新版本的xdb 脚本已经解决这个问题,已经通过了测试。 |
| | 254 | }}} |
| | 255 | |
| | 256 | * ent_question 表 question_contact 字段存贮有二进制数据 |
| | 257 | {{{ |
| | 258 | question_contact 字段 存有二进制数据00 , 在文本下表现为可打印字段^@ (linux ctl+v+2) |
| | 259 | @ 在pg里是运算符导致问题? |
| | 260 | pg报错: ERROR: VALUES lists must all be the same length at character 16690 |
| | 261 | |
| | 262 | 初步查明,这些数据都为历史数据,新数据已经没有这个字段的输入了。 |
| | 263 | |
| | 264 | 详细描述: |
| | 265 | http://bbs.pconline.cn/topic-2164.html |
| | 266 | }}} |
| | 267 | |
| | 268 | * oracle中的number类型数据导入postgresql |
| | 269 | {{{ |
| | 270 | 用xdb 从oracle导出来的是文本,转入pg的时候,会发生自动转换 |
| | 271 | number类型导入到postgresql中会转为bigint类型,number(10,2)这样的会转为double类型,造成数据不一致 |
| | 272 | |
| | 273 | 解决方案:批量生成表结构,然后手工修正,修正的规则是 |
| | 274 | number类型的根据业务逻辑判断转换后的应该是bigint还是numeric(10,2) |
| | 275 | number(10,2)类型的转换为numeric(10,2) |
| | 276 | |
| | 277 | }}} |
| | 278 | |
| | 279 | |