使用python读取oracle sql文件,并将结果提取到CSV文件中
我是python初学者,希望从python中读取sql文件,并将这些结果获取到CSV文件中。我已尝试使用CX_oracle连接到oracle数据库。当我在代码中直接给出sql查询时,它就起作用了。但是,我不知道如何从python中读取sql文件 下面是我在代码中直接提供sql查询时使用的代码:使用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
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='|')