【问题标题】:importing data to oracle using python cx_oracle使用 python cx_oracle 将数据导入到 oracle
【发布时间】:2015-12-04 16:15:30
【问题描述】:

您好,我是 python 新手(编程和 stackoverflow)。首先让我先说一下我正在做什么和试图做什么。

我正在使用内部 XML API 从内部数据库中提取数据

我将 xml 结果解析/格式化成一个 txt 文档(这会自动发生在 设置间隔)

我想将此文档的内容写入或导入到 oracle 数据库中

我将如何将该文档导入或写入现有的 oracle 数据库?关于我用来与数据库建立连接的 cx_Oracle 模块,我似乎找不到太多的文档方式。你们中的任何人都可以为我指明一个方向/资源来完成这个吗?

【问题讨论】:

    标签: python oracle import document cx-oracle


    【解决方案1】:

    简短回答:

    query = """
    insert into TABLE(FIELD1, FIELD2, ...) values (VAL1, VAL2, ...)
    """
    cur = con.cursor()
    cur.execute(query)
    cur.commit()
    

    强烈建议您使用prepared statements

    长答案:

    这适用于 Linux,尤其是 Red Hat。只有最后的 Python 代码可以在每个操作系统上使用。尝试根据您的操作系统调整这些步骤。

    0:安装包libaiopython-dev(或python-devel,检查你的发行版)

    1:如果您没有pip,请安装它

    2:从Oracle site安装oracle instantclient-basicinstantclient-sdk(或instantclient-devel

    3:使用bash 启动这些命令。如果您没有 /etc/profile.d/,请检查您的发行版。

    echo 'ORACLE_HOME="/usr/lib/oracle/12.1/client64"' | \
    sudo tee /etc/profile.d/cx_oracle.sh
    
    pip install cx_Oracle
    

    4:注销并重新登录

    5:在使用cx_Oracle之前,你必须设置LD_LIBRARY_PATH我建议你NOT全局设置:

    export LD_LIBRARY_PATH="$ORACLE_HOME/lib"
    

    6:最后是 Python 代码:

    import cx_Oracle
    
    os.environ["NLS_LANG"] = "AMERICAN_AMERICA.UTF8"
    con_str = "USERNAME/PASSWORD@HOST:PORT/DBNAME"
    con = cx_Oracle.connect(con_str)
    
    query = """
    select 1 from dual
    """
    cur = con.cursor()
    cur.execute(query)
    rows = cur.fetchall()
    
    for row in rows:
        print(row) # it should print "1"
    
    con.close()
    

    您必须使用您的用户名、密码等更改con_str。设置utf-8 编码的行是可选的,可以根据您的需要进行调整,但建议使用。

    7:如果要插入行:

    query = """
    insert into TABLE(FIELD1, FIELD2, ...) values (VAL1, VAL2, ...)
    """
    cur = con.cursor()
    cur.execute(query)
    cur.commit()
    

    如果您不能信任数据来源,我强烈建议您使用prepared statements

    来源:

    1. http://chilipuppy.blogspot.it/2008/10/purpose-im-working-on-building-python.html
    2. http://agiletesting.blogspot.it/2005/05/installing-and-using-cxoracle-on-unix.html
    3. http://cx-oracle.readthedocs.org/en/latest/index.html
    4. 个人麻烦

    【讨论】:

    • 非常感谢!我忘了提到在发帖之前我已经能够连接到数据库了。
    • @shannona2013: 你能提供一个你的txt数据的例子吗?
    • 当然,如果这就是您的意思,请告诉我。我用更一般的信息替换了用户名和其他内容。另外我应该提到来源是值得信赖的,因为我自己做的。是否可以像在蟾蜍中一样将文档直接插入表格? 867916136,john,Save,0,server,Web Interface,HTML (UI),15,2015-09-09T12:31:53-04:00
    【解决方案2】:

    您的问题基本上是“我如何开始使用 cx_Oracle?”

    这里有一些sn-ps:

    http://markharrison.net/cx-oracle-demos

    你最简单的 cx_Oracle 程序是这样的:

    import cx_Oracle
    conn = cx_Oracle.connect('scott/tiger')
    curs = conn.cursor()
    
    curs.execute('select 2+2 from dual')
    print curs.fetchall()
    
    curs.execute('insert into mytable(x) values(3)')
    conn.commit()
    
    curs.execute('select * from mytable')
    for row in curs:
        print row
    
    conn.close()
    

    【讨论】:

    • 非常感谢!这个链接正是我正在寻找的东西的类型:)
    猜你喜欢
    • 2016-06-17
    • 1970-01-01
    • 2020-02-06
    • 2020-08-10
    • 2019-05-02
    • 1970-01-01
    • 2011-12-30
    • 2020-11-02
    • 1970-01-01
    相关资源
    最近更新 更多