关于“SQL生成SQL”技巧曾经介绍过两次,参考下面的文章。
《【Tips】使用SQL生成外键的SQL创建语句》
http://space.itpub.net/519536/viewspace-625455
《【转义】使用SQL生成SQL语句时单引号的转义处理》
http://space.itpub.net/519536/viewspace-628186
今天使用这个小技术完成表的“备份”,这里的“备份”含义是指根据表的内容生成表的插入语句。
1.创建测试表T,并初始化几条数据
sec@ora10g> create table t (x int, y varchar2(10));
sec@ora10g> insert into t values (1,'HOU');
sec@ora10g> insert into t values (2,'SEC');
sec@ora10g> insert into t values (3,'ANDY');
sec@ora10g> insert into t values (4,'Good');
sec@ora10g> insert into t values (5,'Luck');
sec@ora10g> commit;
2.T表内容如下
sec@ora10g> select * from t;
X Y
---------- ----------
1 HOU
2 SEC
3 ANDY
4 Good
5 Luck
3.简单拼接之后,效果显然。
sec@ora10g> select 'insert into t values (' ||x||','''||y||''');' as "Insert Statements" from t;
Insert Statements
--------------------------------------------------------
insert into t values (1,'HOU');
insert into t values (2,'SEC');
insert into t values (3,'ANDY');
insert into t values (4,'Good');
insert into t values (5,'Luck');
4.小结
“SQL生成SQL”是一个非常实用的小技巧。简单给自己构造一个场景,深入其中体会一番。
Good luck.
secooler
10.03.12
-- The End --