使用Python 2.7从Oracle数据库12c导出数据
我正在尝试使用Python 2.7将Oracle 12c数据库中包含的表导出为csv格式。我编写的代码如下所示:使用Python 2.7从Oracle数据库12c导出数据,python,sql,oracle,python-2.7,export-to-csv,Python,Sql,Oracle,Python 2.7,Export To Csv,我正在尝试使用Python 2.7将Oracle 12c数据库中包含的表导出为csv格式。我编写的代码如下所示: 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') connectio
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()
此代码在我定义“连接”的行中产生错误:
ORA-12557:TNS:协议适配器不可加载
我该怎么补救呢?任何帮助都将不胜感激
请注意:我已经遇到了与此问题非常类似的StackOverflow响应。但是,他们经常建议更改环境变量内的路径-我无法这样做,因为我没有适当的管理权限。再次感谢您的帮助。ORA-12557是由于Windows上的
%ORACLE\u HOME%
出现问题造成的。通常的建议是更改路径
设置
“我无法执行此操作,因为我没有适当的管理员权限。”
在这种情况下,你没有太多的选择。也许您可以导航到ORACLE_主目录并从那里运行脚本。否则,请查看您还有哪些其他可用工具:Oracle SQL Developer?蟾蜍?SQL*Plus?ORA-12557是由Windows上的
%ORACLE\u HOME%
问题引起的。通常的建议是更改路径
设置
“我无法执行此操作,因为我没有适当的管理员权限。”
在这种情况下,你没有太多的选择。也许您可以导航到ORACLE_主目录并从那里运行脚本。否则,请查看您还有哪些其他可用工具:Oracle SQL Developer?蟾蜍?SQL*Plus?我们发现,通过导航到config->Oracle并编辑文件“tnsnames.ora”,可以解决这个问题。tnsnames文件显示如下:
connection_name =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS= ... )
)
(CONNECT_DATA =
(SERVICE_NAME= ...)
)
)
通过将connection\u name
的第一个实例更改为connection\u name.WORLD
,然后键入
set ORACLE_HOME=
在执行Python脚本之前进入命令行,上面的脚本现在运行时没有错误。我们发现,通过导航到config->Oracle并编辑文件“tnsnames.ora”,可以解决问题。tnsnames文件显示如下:
connection_name =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS= ... )
)
(CONNECT_DATA =
(SERVICE_NAME= ...)
)
)
通过将connection\u name
的第一个实例更改为connection\u name.WORLD
,然后键入
set ORACLE_HOME=
在执行Python脚本之前,将其插入命令行中,上面的脚本现在运行时不会出错。我使用ini文件存储DB连接参数。希望能有帮助
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
我使用ini文件来存储DB连接参数。希望能有帮助
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导出:
您可以将此python脚本用于oracle csv导出:
如果您可以使用计算机上的其他应用程序连接到实例,那么您很有可能在不需要任何其他人的情况下修复此问题。但是在任何情况下,我怀疑现场的人员都能更好地帮助您。如果您可以使用计算机上的其他应用程序连接到实例,那么您很有可能在不需要任何其他人的情况下修复此问题。但是在任何情况下,我怀疑现场的人员都能更好地帮助您。是否可以在python脚本中指定Oracle主目录的位置并以这种方式执行?是否可以在python脚本中指定Oracle主目录的位置并以这种方式执行?