Plusieurs instructions de mise à jour SQL dans une seule requête
Je suis dans une situation où je suis, la mise à jour d'environ 12 000 articles dans ma DB.
Chaque ligne doit refléter un fichier excel que j'ai fait précédemment.
J'ai fait le fichier qui crée chaque ligne de la requête SQL, mais je ne suis pas sûr si je peux exécuter chaque ligne dans une seule requête.
Ceci est un exemple de ce que je suis en train de faire.
UPDATE [STORESQL].[dbo].[RPT_ITM_D] SET F1301='1.29' WHERE F01='0000000000001'
UPDATE [STORESQL].[dbo].[RPT_ITM_D] SET F1301='1.39' WHERE F01='0000000000002'
Ce travail, ou est-il de meilleures options pour ce que je suis en train de réaliser?
Chaque élément a une valeur unique et la colonne à être modifié aura une valeur unique. Je ne vois pas comment je pourrais faire ce travail avec une boucle, ou toutes les autres méthodes que j'ai trouvé à ce jour. Je me rends compte que cela peut prendre beaucoup de temps, mais le temps n'est pas un problème.
Je vous remercie à l'avance
source d'informationauteur Erick Ely | 2012-02-06
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez ajouter tous les mono-ligne-mise à Jour-états dans une même requête, comme vous êtes en train de faire.
Quelque chose comme ceci est le meilleur que vous pouvez faire:-
Autre que cela, l'exécution de plusieurs mises à jour est le chemin à parcourir.
Je pense que la meilleure solution est d'importer la feuille de calcul Excel dans une table de votre base de données SQL. À partir de là, vous pourriez être en mesure d'utiliser une jointure pour créer une seule instruction de mise à jour pour tous les 12.000 articles.
Pour plus d'informations sur comment faire pour importer une feuille Excel en SQL: http://msdn.microsoft.com/en-us/library/ms141209.aspx
L'instruction de mise à jour serait alors ressembler à ceci:
Si vous ne savez pas si ce serait le travail en toute sécurité, vous pouvez essayer cette requête pour une valeur unique par simple ajout:
Prendre un coup d'oeil à FUSION par exemple quelque chose comme:
...mais à l'aide d'un tableau de la valeur constructeur de cette manière ne serait pas à l'échelle de 12 000 lignes! Alors regardez pour la première copie des données à partir d'Excel vers une table sur le serveur, puis utiliser la table comme source par exemple
Si vous avez une quantité importante de données à jour, il peut être avantageux pour charger le fichier excel dans la base de données comme un tableau, puis mettre à jour votre tableau basé sur les données de ce chargé de la table.
Si vous êtes sur SQL server, vous pouvez utiliser SSIS pour charger le fichier assez rapidement.
Vous pouvez utiliser la fonction concatener dans Excel à l'image d'une requête, Tout ce que vous devez faire est d'encadrer une seule requête de mise à jour et faites-le glisser pour le reste
concatenate("Update set =",,",où =
",,";")
Utiliser le format ci-dessus et faites glisser la cellule jusqu'à la fin ou double-cliquez sur le coin en bas à droite pour le remplissage Automatique de la mise à Jour de la déclaration. Je crois c'est la voie la plus courte possible et l'exécuter dans un seul coup.