passage de table de grande taille

passage de table de grande taille - SQL/NoSQL - Programmation

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

Reply

Marsh Posté le 04-07-2017 à 22:15:17   

Reply

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.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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


---------------

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed