Optimiser lecture base de données (millions de lignes)

Résolu
nbl335 -  
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je dois importer 3 fichiers depuis une base de données.
Le premier (95000 lignes) ne pose aucun probleme
Par contre les deux autres font 75 millions de lignes pour respectivement 3 et 4 colonnes et j'ai une erreur de mémoire lorsque je compile.
J'utilise la technique chunksize pour importer par paquet mais cela ne suffit pas ...

voici à quoi ressemble mon code :

query2 = "SELECT [col1], [col2], [col3], [col4] FROM DATA1;"
df1 = pd.read_sql(query2, sql_conn, chunksize=100000)
dft = pd.concat(df1)

query3 = "SELECT [col1], [col2], [col3] FROM DATA2;"
df2 = pd.read_sql(query3, sql_conn, chunksize=100000)
dfm = pd.concat(df2)


Du coup les deux font 75 millions de lignes et impossible d'importer les données sur python (j'utilise PyCharm)

(sachant également que j'ai 8Go de RAM)

Configuration: Windows / Firefox 87.0
A voir également:

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
dans quoi dois-tu importer?
peux-tu montrer un code complet?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
je ne vois pas bien d'où te viens l'idée d'importer par paquets et d'ensuite rassembler tous les paquets avant d'exporter.
ne te semble-t-il pas plus utile d'exporter les paquets au fur et à mesure?

n'hésite pas, par ailleurs, à nous préciser à quelle ligne tu as une erreur de mémoire. si tu ne peux pas le déterminer, ajoute des instructions print() pour déterminer ce que fait ton programme.
0
nbl335
 
Bonjour,

Le code se résume à ça seulement (juste avant je me connecte au serveur SQL avec la variable sql_conn)
0
nbl335 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
J'importe par paquet parce que j'ai pas assez de mémoire vive, de base j'importais respectivement 2 et 3 colonnes pour les 2 gros jeux de données et ça marchait avec chunksize mais pas sans.
Sauf que hier j'ai ajouté 1 colonne à importer dans chaque jeu de données (donc je passe à 3 et 4 colonnes) et ça plante...
Du coup tu me conseilles d'exporter au fur et à mesure les paquets ?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > nbl335
 
si le code ne fait rien de plus, à quoi sert-il? comme tu ne fais rien avec dft et dfm, pourquoi faire tout cela?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > nbl335
 
tout dépend de ton code et de ton contexte.
pourquoi penses-tu qu'il est plus efficace de tout importer avent de commencer à exporter?
0