我正在尝试整合一些数据库,我对CHARACTER集有一些问题。
我的数据库如下所示:
源数据库
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
NLS_CHARACTERSET WE8ISO8859P1
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_LENGTH_SEMANTICS BYTE
目标数据库
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
NLS_CHARACTERSET AL32UTF8
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_LENGTH_SEMANTICS BYTE
我导出了一个模式,但是当我在新数据库中导入时,我遇到了很多错误:
ORA-02374: conversion error loading table owner.table_name
ORA-12899: value too large for column col_name (actual: 403, maximum: 400)
我已经运行了 csscan 实用程序。结果如下:
TABLE Convertible Truncation Lossy
------ ------------- ------------- ------------
1 0 18 24
2 2,248 120 19,854
3 2,155 120 19,551
4 5,431 294 41,531
5 5,925 114 18,352
6 129 4 5,095
7 109 4 5,017
8 2,149 151 5,219
------ ------------- ------------- -------------
那么,有什么方法可以在导入之前找出目的地中VARCHAR2的值?我可以改变表格的结构。在我们的示例中,我可以更改我的表并将列的大小从400修改为403。
如果您需要更多信息或其他任何信息,请发表评论。
提前致谢!
答案 0 :(得分:0)
csscan工具会告诉您转换后Truction记录的大小,您可以使用它来更改字段的大小。在下面的示例中,您需要将SAMPLE_COLUMN的大小从VARCHAR(40)更改为VARCHAR(43)以覆盖要转换的所有内容:
csscan .err示例输出:
User : SAMPLE_USER
Table : SAMPLE_TABLE
Column: SAMPLE_COLUMN
Type : VARCHAR2(40)
Number of Exceptions : 5
Max Post Conversion Data Size: 43
希望这有帮助。