【问题标题】:Extract table names from oracle database server从 oracle 数据库服务器中提取表名
【发布时间】:2019-04-05 09:40:01
【问题描述】:

我可以访问一个连接到商店的 oracle11g 服务器,并且有一个软件可以在 softare 中获取报告,但该软件是封闭源代码的。 因为我在数据库中有一个用户名,我可以从软件访问所有报告,但我想自动化一些工作并想编写一个 python3 脚本来做到这一点。我只需要知道 DB 中的表名。我想要一个在 oracle 中返回表名的代码。 我可以从“PLSQL Developer”和我未完成的 python 代码访问数据库。

import cx_Oracle
con = cx_Oracle.connect('username/password@serveraddress/dbname')
print (con.version)
cur =con.cursor()
cur.execute(" SOME ORACLE CODE")
#cur.execute('select * from tablesname orderby id' )

for i in cur:
    print (i)
con.close()

那么什么是可以执行并将表名返回给我的代码?

ps:我什至使用wireshark 找出程序发送到服务器的代码是什么,但数据包中没有表名。 :(

p.s 2:欢迎任何有创意和不寻常的答案。

【问题讨论】:

    标签: oracle dictionary catalog


    【解决方案1】:

    你可以使用

    select table_name
      from user_tables
     order by table_name
    

    select table_name
      from cat
     where table_type = 'TABLE'  
     order by table_name
    

    导出当前用户中所有表的名称。其中catuser_catalog 数据字典视图的同义词,user_tables 是数据库在安装过程中自动创建的另一个数据字典视图。

    【讨论】:

    • 感谢您的回答。我运行了代码,过去几天第一次它没有错误结束,但它也没有重新调整,所以对代码进行任何更改以将表名返回给我吗?
    • @مهردادمارشگی 欢迎兄弟。您确定您的用户中有任何表格吗..?
    • 谢谢兄弟。似乎我没有任何东西,但在 PL/SQL Developer 程序中,我可以看到具有以下内容的用户:CTXSYS、EXFSYS、GENERAL、OLAPSYS、ORDDATA、SRDSYS、SYS、SYSTEM、WMSYS、XDB。因此,您真是太好了,教我如何从该用户那里查询,而这些用户不是我必须寻找答案的人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多