Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : requete SQL INSERT tableau 2D dans table sql [ SQL Server, MSDE, SQL Express / Requêtes ] (LaTatadu91)

mercredi 30 janvier 2008 à 13:42:59 | requete SQL INSERT tableau 2D dans table sql

LaTatadu91

Bonjour,

je debute en SQL, je precise avant tout!
je programme actuellement un petit logiciel sous VC++ et j'effectue quelques requetes SQL pour attaquer une base SQL SERVER EXPRESS

je me retrouve confronté à un probleme pour insérer ou faire un update d'une table avec un tableau 2dimensions tab[50][200]
je voudrais pouvoir insérer chaque élement de ce tableau dans ma table et ce ci en une seule requete
car actuellement je fais une requete pr chaque element : tab[0][0] puis tab[0][1] etc.... -->tab [50][200]
ce qui me donne enormement de requetes au final!

je voudrais donc savoir si il n'y a pas moyen de changer ma requete ou ma table pour insérer mon tableau entier en 1 seule requete...
Merci de votre aide !


 


jeudi 31 janvier 2008 à 22:06:02 | Re : requete SQL INSERT tableau 2D dans table sql

nhervagault

Administrateur CodeS-SourceS
Salut

Si c'est la meme valeur, c'est un
update matable
set value = valeur


si c'est une plage
update matable
set value = valeur
where id = (select id from matable ...jointure  where ..)


si toutes valeurs c'est different c'est 1 requete par valeur
mais il est possible de faire des :lots
en concatenant les requetes dans la meme commande ado
a la place de faire un update par commande

pour les insertions
il existe les bulk insert

bon courage

vendredi 1 février 2008 à 09:37:36 | Re : requete SQL INSERT tableau 2D dans table sql

LaTatadu91

Salut et merci,
je me situe dans ce cas la :
"si toutes valeurs c'est different c'est 1 requete par valeur
mais il est possible de faire des :lots
en concatenant les requetes dans la meme commande ado
a la place de faire un update par commande"

aurais tu un exemple pour un lot de requetes STP?
sinon,
Bulk INSERT j'avais trouver mais ca ne correspond pas car a priori ca permet d'insérer le contenu d'un fichier...

 


vendredi 1 février 2008 à 15:23:37 | Re : requete SQL INSERT tableau 2D dans table sql

nhervagault

Administrateur CodeS-SourceS
C'est simple tu mets toutes les requetes à la queuleuleu séparé par un ; Et apres tu lances tout dans la même commande Attention, il faut eviter que ta commande sont trop grosse pour eviter d'engorger SQL server (il faut pas je pense mettre 1 millions de update dans une commande par exemple) faire des lots de 1000 ou 2000 requetes doit etre intérressant.

vendredi 1 février 2008 à 17:42:10 | Re : requete SQL INSERT tableau 2D dans table sql

LaTatadu91

ok merci je vais faire le test lundi matin
par 1000? bon c'est deja ca...
la j'en ai pr ce coup 6000 a faire on verra ce que ca donne :-)

merci encore !

 


lundi 4 février 2008 à 10:57:50 | Re : requete SQL INSERT tableau 2D dans table sql

LaTatadu91

Salut,

Bon apres tests j'ai réussi à effectuer un lot de 6000 requetes en 42secondes....
ce qui me parait assez performant, le probleme est que pour mon programme c'est bien trop lourd
car beaucoup de choses à gérer...

arf arf arf

 


lundi 4 février 2008 à 11:14:32 | Re : requete SQL INSERT tableau 2D dans table sql

LaTatadu91

et en effectuant mes requetes 1 par 1 ca donne 47secondes....donc effectivement il y a un gain mais moindre!
dommage pour moi!

je vais peut etre pour cette partie me rabattre vers un transfert de fichier :-(

 


lundi 4 février 2008 à 12:11:50 | Re : requete SQL INSERT tableau 2D dans table sql

nhervagault

Administrateur CodeS-SourceS
c'est des temps SQL profiler ou des temps montre en main

lundi 4 février 2008 à 13:11:57 | Re : requete SQL INSERT tableau 2D dans table sql

LaTatadu91

j'ai pris le temps d'execution de mon programme C++ en mettant un difftime avant et juste apres l'appel de la fonction !

 


lundi 4 février 2008 à 20:26:03 | Re : requete SQL INSERT tableau 2D dans table sql

nhervagault

Administrateur CodeS-SourceS
As-tu des index sur ta table dans laquelle tu inseres si oui tu les supprimes et tu les rejoutes apres?
As-tu des triggers sur les insertions?


Il y a surement une cause. Et ton temps est juste le test SQL, d'insertion, il y a pas de code avant et apres le code SQL.
Il y a pas d'opération de chaine de caracteres trop importante, car ca plombe la mémoire des fois.
dans des langages avec VM c#, java et autre les strings sont immuables et donc
reconstruites a chaque fois en c++ je ne sais pas comment, c'est géré.

Bon courage.




1 2

Cette discussion est classé dans : table, sql, tableau, requete, tab


Répondre à ce message

Sujets en rapport avec ce message

pb requete sql [ par lenneth666 ] Voila dans une table Personne , j'ai les trois champs suivants :  personne_id, nom et prénom.j'aimerais faire une reuqete qui me retourne le nom et pr Requete SQL complexe [ par Mindiell ] Bonjour,J'ai un probleme de requete :J'ai une table contenant une societe n°8 par exempleJ'ai une table de personnes : 1, 2, 3, 4, etc...J'ai une autr [SSIS] Requete SQL [ par sdisp ] Bonjour.Je souhaite via SSIS:- exécuter une requête SQL (je souhaite que la requête soit une variable)- créer un fichier texte contenant le résultat d [SQL Server 2000] Requete SQL Comparer 2 table [ par sdisp ] Bonjour.J'essaie de faire une requête qui me pose soucis!Je vous explique, j'ai de table de structure identique dans 2 bases différentes, soit:- base1 requete avec valeur en entré [ par hakimlimem ] voila d'habitude(sql server 2005) pour faire une requete utilisant unje valeur en entréexempleselect * from tab where id=@idalors que la je dois trava requete sql [ par jolicoeur79 ] salut les ami j'ai un champs qui s'appele (codestagiaire) dans la base mysql qui es compose des chiffre "10.456.07" ,"10.1023.07 et je veux que le res SQL création table dynamyque (SSIS) [ par suzukMan ] Bonjour,Petit souci avec les package SSIS.Je m'explique je lis dans une base sybase une table je voudrais ensuite inserer les données sous sql serveur Modification propriétaire d'une table s'ube base de donées Sql [ par Palenf ] Bonjour,Je souhaiterais modifier le propriétaire d'une table d'une base de données sous SQL serveur 2000.Le problème que je rencontre est le suivant : Requete SQL informations sur une base de donnée [ par re12 ] BonjourJ'aimerai faire une requête sql (pour mysql) qui me donne des informations sur une base de donnée (taille...)j'ai bien trouver ça:http://www.ar aide requete SQL [ par manik971 ] Bonjour,voivi une exemple de table [URL=http://www.monsterup.com][IMG]http://www.monsterup.com/upload/1211381847.jpg[/IMG][/URL]j'ai un script en vb q


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,484 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.