【问题标题】:Is there a function which will take schema name and table name and return all the column names in the table是否有一个函数将获取模式名称和表名并返回表中的所有列名
【发布时间】:2019-09-03 12:57:12
【问题描述】:

我正在尝试使用 python 通过 CX_Oracle 模块从 oracle 数据库下载表

以下命令与凭据一起在笔记本中执行

temp = list()
for row in c.execute('SELECT * FROM dbname.tablename'):
        temp.append(row)
df = pd.DataFrame(temp)

我能够将所有行放入变量 temp 但是。我也想获取列名。

所以我的方法是单独获取列名并将它们添加到上面的df中。

对于给定的模式名和表名,我想在 Oracle 中查找该表的列名。

“到目前为止,这并没有返回任何内容,但列存在'

select table_name
from all_tab_columns 
where column_name = 'modby'

提前感谢您的帮助

【问题讨论】:

    标签: python sql oracle


    【解决方案1】:

    默认情况下,Oracle以大写存储对象和列名,所以试试

    select table_name
    from all_tab_columns 
    where column_name = 'MODBY'          --> instead of 'modby'
    

    【讨论】:

      【解决方案2】:

      您需要在比较的两边使用上限或下限,因为 Oracle DB 的区分大小写的方式不同。 object names(表、列等)如果包含在 " 中,则区分大小写存储,否则创建时 oracle DB 会将所有不带双引号的对象名称转换为 uppercase 名称。

      尝试以下查询:

      select table_name
      from user_tab_columns 
      where lower(column_name) = 'modby'
      

      如果您想要表的所有列名,请尝试以下查询:

      select column_name
      from user_tab_columns 
      where lower(table_name) = lower('<your_table_name>');
      

      干杯!!

      【讨论】:

      • 谢谢 Tejash。我在 sql developer 中执行了这个命令,但是对于这两个查询,我在输出窗口中什么都没有。
      • 你能编辑问题并分享表格的ddl吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-20
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多