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

Résolu/Fermé
nbl335 - Modifié le 14 avril 2021 à 13:31
mamiemando Messages postés 33155 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 juin 2024 - 14 avril 2021 à 13:38
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

1 réponse

yg_be Messages postés 22899 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 juin 2024 1 480
13 avril 2021 à 19:13
bonjour,
dans quoi dois-tu importer?
peux-tu montrer un code complet?
0
yg_be Messages postés 22899 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 juin 2024 1 480
13 avril 2021 à 19:17
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
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 22899 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 juin 2024
14 avril 2021 à 09:47
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 22899 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 juin 2024 1 480 > nbl335
14 avril 2021 à 10:55
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 22899 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 juin 2024 1 480 > nbl335
14 avril 2021 à 10:57
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