Oracle复制表报错ORA-00922:CREATE TABLE LIKE语句遇无效选项
ORA-00922: missing or invalid option 错误排查与解决
错误原因
Oracle数据库不支持CREATE TABLE ... LIKE ...语法,该写法属于MySQL等其他数据库的语法规范,Oracle无法识别LIKE关键字在该位置的用法,因此抛出“缺失或无效选项”的错误。
解决方法
方法1:仅复制表结构(不含数据)
使用CREATE TABLE ... AS SELECT语法,通过WHERE 1=0过滤数据,只复制表的列定义和数据类型:
CREATE TABLE ZMMM_END1 AS SELECT * FROM ZMMM_END WHERE 1=0;
注意:此方式不会复制源表的主键、外键、唯一约束、索引、触发器等对象,需手动补充创建。
方法2:完整复制表结构(含约束、索引等)
利用Oracle的DBMS_METADATA包生成源表的完整DDL语句,修改表名后执行即可复制所有结构对象:
-- 获取源表的建表DDL SELECT DBMS_METADATA.GET_DDL('TABLE', 'ZMMM_END') FROM DUAL;
将查询结果中的表名ZMMM_END替换为ZMMM_END1,执行修改后的DDL语句即可完成完整复制。
方法3:手动定义表结构
若仅需复制部分列,可手动指定列及数据类型:
CREATE TABLE ZMMM_END1 ( -- 示例:按源表列定义手动列出 ID NUMBER(10), NAME VARCHAR2(50), CREATE_DATE DATE );
后续按需添加约束、索引等对象。
内容的提问来源于stack exchange,提问作者DANIEL
相关产品推荐
相关产品推荐

