insert into table1 (select * from table2);上面这种用法,在table1和table2表结构完全相同的情况下肯定没问题,但是我现在的两个表表结构几乎完全相同(字段名,字段个数和类型都相同),但是字段的顺序可能不同,这样便会出错如:
table1 (A,B,C)
table2 (A,C,B)由于表的具体字段名和个数是不知道的,但可以确定两个表结构式一致的,请问如何解决,谢谢!
table1 (A,B,C)
table2 (A,C,B)由于表的具体字段名和个数是不知道的,但可以确定两个表结构式一致的,请问如何解决,谢谢!
然后再insert
例如表结构是这样
table1 (A,B,C)
table2 (A,C,B)
你就可以按照这样的方式插入嘛
insert into table1 select a,b,c from table2
表的具体字段名和个数是不知道的?那咋好对应呢?
给你个建议,通过数据字典查出表的所有栏位有哪些,
SELECT * FROM all_tab_cols WHERE table_name='TABLE1';
然后查询语句中将所有栏位按顺序查询出来,再insert
INSERT INTO table2(col1,col2,col3....) SELECT col1,col2,col3....FROM table1;
可以通过desc来看啊
--例如查看emp表的字段,你可以分别看看两个表的结构,然后对应字段就可以了
SQL> desc emp;
名称 是否为空? 类型
----------------------------------------- -------- ---------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
INSERT INTO table2(col1,col2,col3....) SELECT col1,col2,col3.... FROM table1;
这个不复杂的,就是指定哪列导入到哪列。你仅仅insert只插入必填项不是也得指定列名么。
table_A1 到 table_A2
table_B2 到 table_B2
table_C3 到 table_C2
...
表有多少是不一定的,是要遍历的,所有这种查看的方式是不行的。
还请多出主意啊,谢谢。
desc tablename 便可知道表的类型以及个数