具体要求请看1楼

解决方案 »

  1.   

    大家应该都用过PL/SQL Developer,它有个数据导出的功能,可以把数据转化成INSERT语句导出,比如我在SQL窗口中写上两条SELECT语句:select owner,table_name from all_tables where rownum<3;
    select owner,table_name,column_name from all_tab_columns where rownum<3;
    --通过数据导出功能可以转化成以下INSERT语句:
    --文件1:a.sql
    insert into all_tables (OWNER, TABLE_NAME)
    values ('SYS', 'CON$');insert into all_tables (OWNER, TABLE_NAME)
    values ('SYS', 'IND$');
    --文件二:b.sql
    insert into all_tab_columns (OWNER, TABLE_NAME, COLUMN_NAME)
    values ('SYS', 'ACCESS$', 'D_OBJ#');insert into all_tab_columns (OWNER, TABLE_NAME, COLUMN_NAME)
    values ('SYS', 'ACCESS$', 'ORDER#');
    但是这里这里有个问题:不能一次性导出这两条SQL的查询结果,只能通过点击两次“数据导出”按钮去执行导出,且只能分开导出成2个SQL文件。当我写的SQL语句很多的时候,比如二三十条的时候,这个时候导出很容易出错,而且太过于机械化,同时我希望在同一个SQL窗口执行的SQL结果导出成一个SQL文件。有没有一种方法可以一次性把这两条SQL的执行结果一次性导出在同一个文件里面呢?
    我想应该有人做过这种尝试,有类似尝试的都可以发相关代码或者操作步骤上来,不管是否得到最终结果,一律给分!
      

  2.   

    你把所有的查询结果都插入到表里面,然后用PL/SQL Developer 一次性将所有的这些表都导出到一个sql文件不久可以了。如下 导出 下面三个查询结果:1、创建临时表保存查询结果
       create table  tbl_a  as select owner,table_name from all_tables where rownum<3;
    create table  tbl_b  as  select owner,table_name,column_name from all_tab_columns where rownum<3;2、一次性导出所有的表
     具体是在PL/SQL Developer 中选中所有要导出的表,然后右键点击“数据导出”,然后楼主应该会了,保存为一个sql文件即可。
     
      

  3.   


    回2楼,
        2、一次性导出所有的表
           具体是在PL/SQL Developer 中选中所有要导出的表
    我选中所有的表,但是执行数据导出的时候,只会导出第一个选中的表,其余的表都没有导出
    我的PL/SQL Developer是8.0的
      

  4.   

    借鉴2楼的方式:create table  tbl_a  as select owner||","||table_name from all_tables where rownum<3;insert into tbl_a select  owner||","||table_name||","||column_name from all_tab_columns where rownum<3;然后将tbl_a中的数据导出来即可。
      

  5.   


    工具->导出表>选择两个表->选择"SQL插入"标签->填写WHERE子句->填写SQL文件路径->导出
      

  6.   

    不好意思,弄错了,应该是
    create table  tbl_test  as select "insert into tbl_a values( "||owner||","||table_name||")" from all_tables where rownum<3;insert into tbl_test select  "insert into tbl_b values( "||owner||","||table_name||","||column_name||")"  from all_tab_columns where rownum<3;导出来,就是insert语句了。
      

  7.   

    但是这种方法得到的是插入table_a的INSERT语句,我需要的是分别插入all_tables和all_tab_columns的INSERT语句,而且不能单单用等||连起来,还要考虑到各种数据类型,比如时间。还有当字段值为空值的时候等等好多情况
      

  8.   

    打开工具->Tables->按住Ctrl建选择所有需要导出的表->然后点击右键,在弹出菜单中选择“导出数据”->然后在弹出界面上选择“SqQL Inserts” ->然后去点所有的选项,也可以根据需要选择  where条件是限制导出每个表的行数,限制只能使用rownum ->然后选择“输出文件”路径和文件名 -> 最后 点击"导出" 即可
      

  9.   

    由于题目是要导出插入语句啊,也就是insert语句。这个方法,只需要将table_a的名称修改一下就可以了。这只是一个实施的思路,并不是符合所有导出数据的insert语句。时间,空值这些类型,没有什么影响啊,因为中间有逗号(",")隔开,这些都能处理好。(目前提供是解决问题的思路,具体问题需要具体分析了,不过,主要修改的就是select 中的字段,以及表名)!!如果SQL语句可以搞定的,就不管你使用的是什么工具,是plsql8.0还是其他的了。
      

  10.   

    谢谢两位,现在问题已经解决,路过的方法可行。另外我自己在国庆也自己写了个自动生成INSERT语句的存储过程