Insertion en masse et commit régulier
Bonjour,
j'ai créé un script qui insère dans une table environ 1,5 Million d'enregistrements. Pour accélérer le traitement, je ne veux pas faire de commit à chaque enregistrement, sinon j'en ai pour 4 jours d'importation et le traitement doit être fait tous les jours :D. Mon problème est que du coup si je fais ca je fais exploser le journal des transactions, ce qui parait logique. Je cherche donc un moyen de faire comme j'arrive à faire sous java c'est à dire flusher le buffer de transaction toutes les 100 requetes par exemple, tout en conservant une transaction globale que je peux rollbacker en cas de problème.
Moi y'en a pas être sur d'être bien clair... Du coup un petit algo pour me faire comprendre :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
prepare_requete(INSERT)
demarre_transaction
pour ligne dans lignes_fichier
param_requete
execute_requete
si ko alors
rollback
fin processus
sinon
incremente_compteur
si (compteur % 1000) = 0 alors
flush_buffer
fin si
fin si
fin pour
commit_transaction |
Any idea ?