Je n’en suis franchement pas fier parce que c’est tout sauf propre et réutilisable, mais cela pourrait peut-être à nouveau servir à l’occasion…
Le script ci-dessous lit l’ensemble d’une base de données en utilisant pyodbc et écrit leur contenu dans un fichier texte, nommé d’après la table dont elles sont issues. En mode bourrin, en somme, puisque
- On liste toutes les tables
- On fait ensuite un
select
sur chacune d’entre elles - Pour ensuite dumper le contenu dans un fichier texte.
Intérêt? Exécuter un grep -rin
par la suite sur les fichiers écrits.
import pyodbc
CXSTR = 'DRIVER={SQL Server};SERVER=...;DATABASE=...;UID=...;PWD=...;'
if __name__ == '__main__':
cnxn = pyodbc.connect(CXSTR)
cursor = cnxn.cursor()
cursor.execute(
"""
SELECT
*
FROM information_schema.tables
WHERE TABLE_TYPE='BASE TABLE'
"""
)
for row in cursor.fetchall():
cursor2 = cnxn.cursor()
cursor2.execute("Select * From " + row[2])
print('using {}'.format(row[2] + '.txt'))
with open(row[2] + '.txt', 'wt', encoding='utf-8') as f:
for row2 in cursor2.fetchall():
f.write(str(row2))
Quand je disais qu’il y avait moyen de faire plus propre… 😢 Allez, pour le fun: le script s’en sort avec un score PyLint de 2.67/10 (missing docstring, invalid name, lines too long, no member et anomalous backslash in string).