我正在尝试将 Oracle 11 导出导入 Oracle 11 XE。
我收到以下消息:
在 WE8MSWIN1252 字符集和 AL16UTF16 NCHAR 字符集中完成的 XE fehlerhaft 导入
导入服务器使用 AL32UTF8 字符集(可能的字符集转换)
任何想法,我如何将此转储导入 Oracle 11 XE ?
编辑:
给定一张桌子
CREATE TABLE BDATA.Artikel(
Key VARCHAR2(3) NOT NULL,
Name VARCHAR2(60) NOT NULL,
Abkuerzung VARCHAR2(5) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
我收到这样的错误
IMP-00019: row rejected due to ORACLE error 12899
IMP-00003: ORACLE error 12899 encountered
ORA-12899: value too large for column "BDATA"."ARTIKEL"."ABKUERZUNG" (actual: 6, maximum: 5)
Column 1 ABL
Column 2 Aufbewahrungslösung
Column 3 AfbLö
Run Code Online (Sandbox Code Playgroud)
导入中缺少某些行。
如果这是您用来创建表的实际 DDL,您可以使用NLS_LENGTH_SEMANTICS参数。如果将其设置为 CHAR 而不是 BYTE 的默认值,则 VARCHAR2(5) 将被分配足够的空间来存储数据库字符集中的 5 个字符(可能最多 20 个字节)而不是 5 个字节(可能只允许 1 个字符) )。
不幸的是,NLS_LENGTH_SEMANTICS
如果您依赖导入过程来创建表,那么更改可能不会非常有用——转储文件将固有地添加 CHAR 或 BYTE 关键字,因此它实际上会发出语句
CREATE TABLE BDATA.Artikel(
Key VARCHAR2(3 BYTE) NOT NULL,
Name VARCHAR2(60 BYTE) NOT NULL,
Abkuerzung VARCHAR2(5 BYTE) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)