Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Oracle上对架构内的所有表执行“选择”查询_Java_Database_Oracle - Fatal编程技术网

Java 如何在Oracle上对架构内的所有表执行“选择”查询

Java 如何在Oracle上对架构内的所有表执行“选择”查询,java,database,oracle,Java,Database,Oracle,我有一个超过1000个表的模式,我需要运行“选择”查询,即 SELECT * FROM Table_Name 在模式的每个表上,这是否可能? 如果是,那么怎么做?确定这是可能的。您将编写1000多条语句,然后运行它们。或者您可以编写一个脚本,为您动态生成SQL,然后运行该脚本 但我能想象的只有一个原因,那就是为什么要这样做,那就是从数据库中导出整个模式,然后将数据移动到其他地方 如果这就是你想做的,那么还有更好的方法 您的提议将非常缓慢,并且会压倒您正在使用的任何客户机/程序/显示器 用一些“

我有一个超过1000个表的模式,我需要运行“选择”查询,即

SELECT * FROM Table_Name
在模式的每个表上,这是否可能?
如果是,那么怎么做?

确定这是可能的。您将编写1000多条语句,然后运行它们。或者您可以编写一个脚本,为您动态生成SQL,然后运行该脚本

但我能想象的只有一个原因,那就是为什么要这样做,那就是从数据库中导出整个模式,然后将数据移动到其他地方

如果这就是你想做的,那么还有更好的方法

您的提议将非常缓慢,并且会压倒您正在使用的任何客户机/程序/显示器


用一些“为什么”或业务需求更新您的问题,我们可以为您提供更好的答案

显然,你做错了。一、 和其他人一样,我看不出这样做的正当理由,但正如你所说的,你提出了一个问题,需要一个答案。所以,这里有一个选项:它基于Scott的模式,其中包含几个表

我正在清理垃圾箱以清除垃圾 “从中选择”选项卡显示我希望获得的输出表 在循环中,PL/SQL将创建一组begin spool到TXT文件中-select语句本身-end spooling SQL*Plus命令 DBMS_输出结果应复制/粘贴到SQL*Plus中并执行 最终结果是包含数据的TXT文件列表 我正在设置LINESIZE和PAGESIZE,以便输出看起来比平时更漂亮;您可能需要将其他一些参数设置为。有关更多信息,请查看SQL*Plus文档 好的,给你:

SQL> purge recyclebin;

Recyclebin purged.

SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
SALGRADE                       TABLE

SQL> set serveroutput on;
SQL> begin
  2    for cur_r in (select tname from tab) loop
  3      dbms_output.put_line('spool ' || cur_r.tname ||'.txt');
  4      dbms_output.put_line('select * from ' || cur_r.tname ||';');
  5      dbms_output.put_line('spool off');
  6    end loop;
  7  end;
  8  /
spool BONUS.txt
select * from BONUS;
spool off
spool DEPT.txt
select * from DEPT;
spool off
spool EMP.txt
select * from EMP;
spool off
spool SALGRADE.txt
select * from SALGRADE;
spool off

PL/SQL procedure successfully completed.

SQL>
现在,运行该结果:

SQL> set pagesize 100
SQL> set linesize 100
SQL> spool BONUS.txt
SQL> select * from BONUS;

ENAME      JOB              SAL       COMM
---------- --------- ---------- ----------
KING       PRESIDENT       1000        100

SQL> spool off
SQL> spool DEPT.txt
SQL> select * from DEPT;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

SQL> spool off
SQL> spool EMP.txt
SQL> select * from EMP;

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17.12.80        800                    20
      7499 ALLEN      SALESMAN        7698 20.02.81       1600        300         30
      7521 WARD       SALESMAN        7698 22.02.81       1250        500         30
      7566 JONES      MANAGER         7839 02.04.81       2975                    20
      7654 MARTIN     SALESMAN        7698 28.09.81       1250       1400         30
      7698 BLAKE      MANAGER         7839 01.05.81       2850                    30
      7782 CLARK      MANAGER         7839 09.06.81       2450                    10
      7839 KING       PRESIDENT            17.11.81       5000                    10
      7844 TURNER     SALESMAN        7698 08.09.81       1500          0         30
      7900 JAMES      CLERK           7698 03.12.81        950                    30
      7902 FORD       ANALYST         7566 03.12.81       3000                    20
      7934 MILLER     CLERK           7782 23.01.82       1300                    10

12 rows selected.

SQL> spool off
SQL> spool SALGRADE.txt
SQL> select * from SALGRADE;

     GRADE      LOSAL      HISAL
---------- ---------- ----------
         1        700       1200
         2       1201       1400
         3       1401       2000
         4       2001       3000
         5       3001       9999

SQL> spool off
SQL>
在当前目录中,现在有几个TXT文件:

SQL> $dir *.txt
 Volume in drive C is OSDisk
 Volume Serial Number is 7635-F892

 Directory of C:\Users\littlefoot

16.08.2018.  21:12               353 BONUS.txt
16.08.2018.  21:12               658 DEPT.txt
16.08.2018.  21:12             1.494 EMP.txt
16.08.2018.  21:12               764 SALGRADE.txt
               4 File(s)          3.269 bytes
               0 Dir(s)  304.432.480.256 bytes free

SQL>

现在,您可以自由地尽可能地使用它们。

我很欣赏这种讽刺,但关键是要得到结果并将其与目标端进行比较,因为我们正在迁移数据,在迁移时需要确保数据没有损坏或不正确。这不是讽刺,您确实不应该做您要求做的事情。如果您想比较两个数据源之间的数据完整性,这不是一个好方法。@Taimoor请用您的迁移详细信息更新您的问题,以及您希望如何确保数据完整性-您如何进行导出/迁移可能决定您是否/如何/何时会担心数据。这就是我所问的问题,是否可能,有没有什么办法,比如“for”循环,我不需要提及迁移的细节,因为我关心的只是数据完整性。我要问的是一个简单的问题,我们是否可以对架构中的所有表运行select查询,请不要开始编写1000多条select语句。但是,您的问题并不简单,您希望如何处理查询结果?把它们打印到一张纸上,然后看一看?是的,您可以使用“循环”查询表名列表,并运行select*FROM遍历它们,但这不是您真正的问题。你的问题被否决是有原因的——虽然不是我做的。你想从哪里以及如何获得数据?