2017-05-10 5 views
0

자동화를 위해 Python 코드를 처음 사용하기 때문에 oracle sql로 작성된 여러 etl 테스트 스크립트를 실행하고 작성합니다 csv 파일에 각 쿼리의 결과, 스크립트는 여러 쿼리를 각각의 쿼리 결과는 CSV에있는 다른 탭에 작성해야 여러 SQL 쿼리가 있습니다 .. 나는 아래의 기본 구조를 작성했지만 어떻게 코드를 수정할 수있는 도움이 필요 했어. 아래 : 수입 OS 수입 cx_Oracle과 CSV 가져 오기 나 자신이 시도하지 않은 있지만스크립트가 파이썬을 사용하여 데이터를 반환 할 때만 여러 oracle sql 스크립트의 결과를 CSV로 내보내는 방법

f = open('tabledefinition.sql') #PATH WHERE THE SQL SCRIPTS ARE STORED 

full_sql = f.read() 

SQL= full_sql.split(';') 

filename="S:\Output.csv" # PATH WHERE THE OUTPUT FILE IS STORED 
FILE=open(filename,"w"); 
output=csv.writer(FILE, dialect='excel') 

connection = cx_Oracle.connect('userid/[email protected]:PORT/SID') 
#CONNECTION DETAILS FOR DB 

cursor = connection.cursor() 

for sql_command in SQL: 
    cursor.execute(SQL) 
    for row in cursor: 
     output.writerow(row) 
     cursor.close() 
     connection.close() 
     FILE.close() 

답변

0

,이 질문은 그것을 명확하게 CSV 파일은 여러 개의 시트/탭을 가질 수 없습니다 : q1, q2, q3

그러나 The Pandas package을 사용하는 것이 좋습니다. 그것은 매우 편리한 read_sql function뿐만 아니라, 아마도 똑같이 편리한 to_csv function을 가지고 있습니다. read_sql 함수는 db에서 DataFrame 오브젝트로 정보를 수집합니다. 그런 다음 Dataframe을 조작하거나 여러 가지 형식으로 저장할 수 있습니다. 그 중 하나는 csv입니다. 하나의 파일에 여러 개의 시트가 필요한 경우 사용할 수있는 옵션은 hdf file 또는 심지어 excel (.xlsx) file입니다.