使用 Python 2.7 从 Oracle Database 12c 导出数据
Export data from Oracle Database 12c using Python 2.7
我正在尝试将包含在 Oracle 12c 数据库中的 table 导出为 csv 格式 - 使用 Python 2.7。我写的代码如下所示:
import os
import cx_Oracle
import csv
SQL = 'SELECT * FROM ORACLE_TABLE'
filename = 'C:\Temp\Python\Output.csv'
file = open(filename, 'w')
output = csv.writer(file, dialect='excel')
connection = cx_Oracle.connect('username/password@connection_name')
cursor = connection.cursor()
cursor.execute(SQL)
for i in cursor:
output.writerow(i)
cursor.close()
connection.close()
file.close()
此代码在我定义 'connection':
的行中产生错误
ORA-12557: TNS:protocol 适配器不可加载
我该如何补救?任何帮助将不胜感激。
请注意:我已经遇到过 Whosebug 对与此非常相似的问题的回应。但是,他们经常建议更改环境变量中的路径 - 我不能这样做,因为我没有适当的管理权限。再次感谢您的帮助。
ORA-12557 是由 Windows 上的 %ORACLE_HOME%
问题引起的。通常的建议是更改 PATH
设置。
"I cannot do this since I don't have appropriate administer privileges."
在这种情况下,您没有太多选择。也许您可以导航到 ORACLE_HOME 目录并从那里 运行 您的脚本。否则看看您还有哪些其他可用的工具:Oracle SQL Developer?蟾蜍? SQL*加上?
我们发现通过导航到配置 -> Oracle 并编辑文件 'tnsnames.ora' 可以解决问题。 tnsnames 文件显示如下:
connection_name =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS= ... )
)
(CONNECT_DATA =
(SERVICE_NAME= ...)
)
)
通过将 connection_name
的第一个实例更改为 connection_name.WORLD
,然后键入
set ORACLE_HOME=
在执行Python脚本之前进入命令行,上面的脚本现在运行没有错误。
我使用 ini 文件来存储数据库连接参数。希望对你有帮助。
self.mydsn = cx_Oracle.makedsn(self.parser.get('oracle', 'db'),self.parser.get('oracle', 'port'),self.parser.get('oracle', 'service_name'))
try:
self.connpool = cx_Oracle.SessionPool(user=self.parser.get('oracle', 'username'),password=self.parser.get('oracle', 'userpass'),dsn=self.mydsn,min=1,max=5,increment=1)
except Exception as e:
print e
您可以使用此 python 脚本进行 oracle csv 导出:
我正在尝试将包含在 Oracle 12c 数据库中的 table 导出为 csv 格式 - 使用 Python 2.7。我写的代码如下所示:
import os
import cx_Oracle
import csv
SQL = 'SELECT * FROM ORACLE_TABLE'
filename = 'C:\Temp\Python\Output.csv'
file = open(filename, 'w')
output = csv.writer(file, dialect='excel')
connection = cx_Oracle.connect('username/password@connection_name')
cursor = connection.cursor()
cursor.execute(SQL)
for i in cursor:
output.writerow(i)
cursor.close()
connection.close()
file.close()
此代码在我定义 'connection':
的行中产生错误ORA-12557: TNS:protocol 适配器不可加载
我该如何补救?任何帮助将不胜感激。
请注意:我已经遇到过 Whosebug 对与此非常相似的问题的回应。但是,他们经常建议更改环境变量中的路径 - 我不能这样做,因为我没有适当的管理权限。再次感谢您的帮助。
ORA-12557 是由 Windows 上的 %ORACLE_HOME%
问题引起的。通常的建议是更改 PATH
设置。
"I cannot do this since I don't have appropriate administer privileges."
在这种情况下,您没有太多选择。也许您可以导航到 ORACLE_HOME 目录并从那里 运行 您的脚本。否则看看您还有哪些其他可用的工具:Oracle SQL Developer?蟾蜍? SQL*加上?
我们发现通过导航到配置 -> Oracle 并编辑文件 'tnsnames.ora' 可以解决问题。 tnsnames 文件显示如下:
connection_name =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS= ... )
)
(CONNECT_DATA =
(SERVICE_NAME= ...)
)
)
通过将 connection_name
的第一个实例更改为 connection_name.WORLD
,然后键入
set ORACLE_HOME=
在执行Python脚本之前进入命令行,上面的脚本现在运行没有错误。
我使用 ini 文件来存储数据库连接参数。希望对你有帮助。
self.mydsn = cx_Oracle.makedsn(self.parser.get('oracle', 'db'),self.parser.get('oracle', 'port'),self.parser.get('oracle', 'service_name'))
try:
self.connpool = cx_Oracle.SessionPool(user=self.parser.get('oracle', 'username'),password=self.parser.get('oracle', 'userpass'),dsn=self.mydsn,min=1,max=5,increment=1)
except Exception as e:
print e
您可以使用此 python 脚本进行 oracle csv 导出: