passage de table de grande taille - SQL/NoSQL - Programmation
Marsh Posté le 04-07-2017 à 23:30:09
Pourquoi ne pas générer un fichier SQL plutôt, contenant les données à insérer ? Sur Mysql, on peut faire un insert into d'un ensemble d'enregistrements en une seule requête.
Marsh Posté le 05-07-2017 à 08:12:03
sur mysql tu as load data infile pour lire directement un fichier et le charger en base : https://dev.mysql.com/doc/refman/5.7/en/load-data.html
sinon, tu peux juste faire des insert de quelques centaines d'enregistrement à la fois côté PHP, le tout au sein d'une seule transaction, ça améliore énormement les perfs
En plus en cas d'erreur l'insert global plante au lieu d'en avoir des bouts qui passent
Marsh Posté le 04-07-2017 à 22:15:17
bonjour a tous
je dispose d'un PC client connecté a une base de données SQL server distante. je dois régulièrement faire plusieurs milliers d'ajouts de ligne grâce a des INSERT INTO successifs dans une boucle for, 1 requête par ligne.
problème: c'est lent et ça bouffe de la disponibilité serveur.
pour économiser du réseau, je souhaiterais que mes requête INSERT INTO dans boucle FOR soient faite directement sur le PC du serveur.
j'ai pensé aux procédures stockées, mais j'ai deux contraintes: mes tables de valeurs sont grosses et leur taille n'est pas fixe. sur internet, je n'ai trouvé d'aide que concernant les petites tables a 1 ou 2 lignes.
auriez-vous une idée? suis-je condamné a construire une requête de 8000 insert into?
merci d'avance