Oracle中表结构和表内容复制
处理该问题注意以下几点:
1. 清空表中数据SQL:truncate table table_name;
2.复制表结构SQL:create table table_name1 as select * from table_name2 where 1=0;
如同时复制内容和创建该表,SQL为:create table table_name1 as select * from table_name2;
3.在sql语句中,时间date类型可以直接比较。
4.select into from结构不太适合,因为PL/SQL会报keyword异常。
所以推荐使用insert into 结构,该结构可以加条件,效率也很高:样例SQL如下:
insert into test_lcpol select * from b2b_lcpol b2b where b2b.etl_datatime > (select nvl(max(intf.etl_datatime), date '2012-09-27') from test_lcpol intf);
解析该SQL:>后面查询的结果就是一个date类型时间,前面是insert into 结构复制表内容。
5.附加Oracle基本知识点:
增加表的一个字段:alter table test_name add ETL_DATATIME date
修改表的一个字段:alter table 表名 modify 字段名 varchar2(长度)
样例SQL:alter table test_name modify WORKTYPE varchar(80);
修改表的一个字段设置为可一置空:alter table table_name modify BIRTHDAY null;