字符集导致 ORA-00957: duplicate column name

原库的字符集是ZHS16GBK,表中字段是中文名称,比如姓名,年龄等等。exp导出正常,在imp导入时遇到报错ORA-00957
内容如下:
nohup imp userid=system/oracle file=20150114.dmp fromuser=user1 touser=user1 buffer=10000000 tables=TB_SYS_EXCEL1 &

IMP-00017: following statement failed with ORACLE error 957:
 "CREATE TABLE "TB_SYS_EXCEL1" ("???" VARCHAR2(128), "???" NUMBER(18, 0) NOT N"
 "ULL ENABLE, "????" VARCHAR2(255) NOT NULL ENABLE, "????" VARCHAR2(255), "??"
 "?" VARCHAR2(13), "????" VARCHAR2(12), "????" VARCHAR2(22), "???????" VARCHA"
 "R2(6), "?????" VARCHAR2(6), "????" VARCHAR2(8))  PCTFREE 10 PCTUSED 40 INIT"
 "RANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1) TA"
 "BLESPACE "SDATA" LOGGING NOCOMPRESS"
IMP-00003: ORACLE error 957 encountered
ORA-00957: duplicate column name

解决方法:
$ export nls_lang=AMERICAN_AMERICA.ZHS16GBK

$ nohup imp userid=system/oracle file=20150114.dmp fromuser=user1 touser=user1 buffer=10000000 tables=TB_SYS_EXCEL1 &

$ tail -100f nohup.out

import done in ZHS16GBK character set and AL16UTF16 NCHAR character set
.importing CDBOLD’s objects into CDBOLD
. . importing table           “TB_SYS_EXCEL1”          9527 rows imported
Import terminated successfully with warnings.


导入成功!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29047826/viewspace-1403125/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29047826/viewspace-1403125/

### 回答1: ORA-00957Oracle数据库的错误代码,表示在一个SELECT语句或CREATE TABLE语句中出现了重复的列名。这通常是由于在查询或创建表时,列名被重复使用所导致的。要解决这个问题,需要检查查询或创建表的语句,确保每个列名只出现一次。如果需要使用相同的列名,请使用别名来区分它们。 ### 回答2: ORA-00957错误常常发生在SQL语句中,表示在一个SQL查询中存在重复的列名。该错误通常发生在创建表格时,当您在创建表格的时候,给同一张表格中的同一个列命名了两次,或者在表格中建立索引时,给相同的列命名了两次时都会出现这个错误。 解决这个错误,最好的方法是检查SQL语句的代码,并修复重复列名的错误。在创建表格或者建立索引的时候,您需要确保每个列都有唯一的名称,否则就会出现ORA-00957错误。一般情况下,隐藏的列可能会引发该异常,因此需要对所要查询的列,进行列名去重的操作,就可以避免出现该错误。 为了避免这种错误,每个表格和索引都应该使用唯一的列名。对于重命名列名,您可以使用“ALTER TABLE”命令并使用表名、旧列名和新列名。如果您发现难以定位ORA-00957错误,可以使用查询或检查工具来发现重复的列名。最好的解决方法实际上是定期检查你的代码来确保没有重复的列名。 总的来说,当您的SQL语句中出现ORA-00957错误时,要重点关注列名是否重复,检查语句中列名的拼写和语法是否正确,最好的方式是仔细检查语句的代码,以查找和修复重复列名的错误,这样就可以避免这个错误的发生。 ### 回答3: ORA-00957Oracle数据库报错信息中的一个,它表示有重复的列名。在Oracle中,不能在同一个表中存在多个同名的列,因为这会造成数据库混乱,甚至可能导致数据的不一致性。因此,当出现ORA-00957错误时,我们需要对数据库中的表结构进行检查,确定是否有重复的列名,然后将其删除或更改。 当我们在创建表的过程中出现ORA-00957错误时,可能是因为我们在定义表的列时将同名列多次输入,这种错误可以通过检查表的列定义语句来修复。如果我们使用的是Oracle的工具,例如SQL Developer或Toad,可以通过显示表结构来查看表中是否有重复的列。如果我们使用的是命令行工具,例如SQL*Plus,可以使用DESC命令来检查表的结构。 如果我们在通过ALTER TABLE语句修改表的结构时出现ORA-00957错误,可以使用同样的方法来修复它。我们需要检查修改语句中的列名是否与已存在的列名相同。如果是这样,我们可以删除或重命名该列,然后重新运行修改语句。 除了以上方法,我们还可以通过使用WITH子句和重命名操作来解决ORA-00957错误。例如,我们可以使用以下SQL语句来重命名列: ALTER TABLE table_name RENAME COLUMN column_name TO new_column_name; 以上就是关于ORA-00957错误的解释和修复方法,我们需要时刻注意数据库表结构的正确性,避免出现重复的列名或其他错误信息,使数据库保持良好的运行状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值