Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python读取oracle sql文件,并将结果提取到CSV文件中_Python_Sql_Oracle_Csv_Cx Oracle - Fatal编程技术网

使用python读取oracle sql文件,并将结果提取到CSV文件中

使用python读取oracle sql文件,并将结果提取到CSV文件中,python,sql,oracle,csv,cx-oracle,Python,Sql,Oracle,Csv,Cx Oracle,我是python初学者,希望从python中读取sql文件,并将这些结果获取到CSV文件中。我已尝试使用CX_oracle连接到oracle数据库。当我在代码中直接给出sql查询时,它就起作用了。但是,我不知道如何从python中读取sql文件 下面是我在代码中直接提供sql查询时使用的代码: import csv import cx_Oracle con = cx_Oracle.connect('XCM/XCM@home.com:1500/HOME') cursor = con.cursor

我是python初学者,希望从python中读取sql文件,并将这些结果获取到CSV文件中。我已尝试使用CX_oracle连接到oracle数据库。当我在代码中直接给出sql查询时,它就起作用了。但是,我不知道如何从python中读取sql文件

下面是我在代码中直接提供sql查询时使用的代码:

import csv 
import cx_Oracle
con = cx_Oracle.connect('XCM/XCM@home.com:1500/HOME')
cursor = con.cursor()
csv_file = open("exp.csv", "w")
writer = csv.writer(csv_file, delimiter='|', lineterminator="\n", quoting=csv.QUOTE_NONE)
r = cursor.execute("select * from home_parties where CREATION_DATE >= trunc(sysdate)")
for row in cursor:
    writer.writerow(row)
cursor.close()
con.close()
csv_file.close()
我尝试了下面的代码从sql文件中获取,该文件具有与上面代码sample.sql中提到的sql查询相同的sql查询,但它无法工作

import csv
import cx_Oracle
con = cx_Oracle.connect('XCM/XCM@home.com:1500/HOME')
cursor = con.cursor()
csv_file = open("exp.csv", "w")
writer = csv.writer(csv_file, delimiter='|', lineterminator="\n", quoting=csv.QUOTE_NONE)
f = open('C:/Users/home1/sample.sql')
full_sql = f.read()
r = cursor.execute(full_sql)
for row in cursor:
    writer.writerow(row)
cursor.close()
con.close()
csv_file.close()

请帮帮我

假设在同一目录中有一个sample.sql文件,查询作为第一行。这将从该文件中读取SQL查询,然后执行查询并将结果保存到名为“exp.CSV”的CSV文件中


sql文件的内容可以在for循环中逐行读取,例如

导入csv
导入cx_Oracle
con=cx\u Oracle.connect('XCM/XCM@home.com:1500/家)
cursor=con.cursor()
sql=“”
以open(“C:/Users/home1/sample.sql”)作为f_in:
对于f_in中的行:
sql+=行
f_out=打开(“exp.csv”、“w”)
writer=csv.writer(f_out,分隔符=“|”,行终止符=“\n”,quoting=csv.QUOTE_NONE)
cursor.execute(sql)
对于光标中的行:
writer.writerow(行)
cursor.close()
con.close()
f_out.close()
f_in.close()

考虑到SQL语句要跨多行分布

谢谢您的帮助。但是我不希望在代码中看到sql查询。我的实际SQL查询相当大。因此,我不想将sql查询直接放在代码中,而是想将其作为一个文件使用,Python应该读取该sql文件-sample.sql并将数据检索到CSV中。请您帮助我如何从Python中读取SQL文件并将数据提取到CSV文件中。看看我是否正确理解了您的意思。这可以完成工作。定义“未工作”。你有错误吗?如果是,错误是什么?在哪条线上?
import cx_Oracle
con = cx_Oracle.connect('XCM/XCM@home.com:1500/HOME')
cursor = con.cursor()

import pandas as pd
with open('sample.sql') as f:
    sql_query_string = f.readline();
sql_query = pd.read_sql_query(sql_query_string, con)

sql_query.to_csv("exp.csv", sep='|')