使用 python cx_oracle 将数据导入 oracle
importing data to oracle using python cx_oracle
嗨,我是 python(编程和 Whosebug)的新手。首先让我先简单介绍一下我正在做的和正在尝试做的事情。
我正在使用内部 XML API 从内部数据库中提取数据
I parse/format xml 结果为 txt 文档(自动发生在
设置间隔)
我想将此文档的内容写入或导入到oracle数据库中
我将如何将此文档导入或写入现有的 oracle 数据库?关于我用来与数据库建立连接的 cx_Oracle 模块,我似乎找不到太多文档。你们中的任何人都可以指出我完成此任务的方向/资源吗?
简短回答:
query = """
insert into TABLE(FIELD1, FIELD2, ...) values (VAL1, VAL2, ...)
"""
cur = con.cursor()
cur.execute(query)
cur.commit()
我强烈建议你使用prepared statements。
长答案:
这是针对 Linux,特别是针对 Red Hat。每个OS上只能使用末尾的Python代码。尝试根据您的 OS.
调整这些步骤
0:安装软件包 libaio
和 python-dev
(或 python-devel,检查您的发行版)
1:如果没有pip
,请安装
2:从 Oracle site
安装 oracle instantclient-basic
和 instantclient-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
我建议您不要全局设置:
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如果你不能相信数据的来源。
来源:
你的问题基本上是"how do I get started with cx_Oracle?"
这里有一些片段:
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()
嗨,我是 python(编程和 Whosebug)的新手。首先让我先简单介绍一下我正在做的和正在尝试做的事情。
我正在使用内部 XML API 从内部数据库中提取数据
I parse/format xml 结果为 txt 文档(自动发生在 设置间隔)
我想将此文档的内容写入或导入到oracle数据库中
我将如何将此文档导入或写入现有的 oracle 数据库?关于我用来与数据库建立连接的 cx_Oracle 模块,我似乎找不到太多文档。你们中的任何人都可以指出我完成此任务的方向/资源吗?
简短回答:
query = """
insert into TABLE(FIELD1, FIELD2, ...) values (VAL1, VAL2, ...)
"""
cur = con.cursor()
cur.execute(query)
cur.commit()
我强烈建议你使用prepared statements。
长答案:
这是针对 Linux,特别是针对 Red Hat。每个OS上只能使用末尾的Python代码。尝试根据您的 OS.
调整这些步骤0:安装软件包 libaio
和 python-dev
(或 python-devel,检查您的发行版)
1:如果没有pip
,请安装
2:从 Oracle site
安装 oracleinstantclient-basic
和 instantclient-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
我建议您不要全局设置:
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如果你不能相信数据的来源。
来源:
你的问题基本上是"how do I get started with cx_Oracle?"
这里有一些片段:
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()