Un script Python que j'ai créé plus tôt. Renvoie l'enregistrement de la table spécifiée dans un fichier CSV.
Voir ci-dessous pour savoir comment installer cx_Oracle. http://mokky14.hatenablog.com/entry/2014/12/17/150854
tbl2csv.py
#!/usr/bin/python3
import cx_Oracle
import sys
import csv
from itertools import chain
argvs = sys.argv
argc = len(argvs)
if argc != 2:
print('Usage: %s TableName' % argvs[0])
quit()
table_name = argvs[1].upper()
file_name = table_name + '_data.csv'
with cx_Oracle.connect('scott','tiger','xx.xx.xx.xx/tns_service_name') as conn:
#Obtenir le nom de la colonne de la table
column_name_sql = 'select column_name from user_tab_columns where table_name = :tbl'
cur_columns = conn.cursor()
cur_columns.execute(column_name_sql, tbl=table_name)
columns = cur_columns.fetchall()
cur_columns.close()
columns = tuple(chain.from_iterable(columns))
#Récupère tous les enregistrements du tableau
data_sql = 'select * from %s' % table_name
cur_data = conn.cursor()
cur_data.execute(data_sql)
with open(file_name, 'w') as f:
csv_writer = csv.writer(f)
csv_writer.writerow(columns)
while 1:
rows = cur_data.fetchmany(50)
if len(rows) == 0:
break
csv_writer.writerows(rows)
cur_data.close()
Récupérez 50 enregistrements de la table et exportez-les dans un fichier. Le traitement se termine lorsque le nombre de récupérations atteint 0. Je pense que la manière d'écrire une boucle de récupération n'est pas suffisante. ..
Recommended Posts