56 votes

Créer un script SQL INSERT avec les valeurs recueillies à partir de la table

J'ai besoin de créer un INSÉRER un script afin de l'insérer dans une autre base de données.
Si dans SQL Server j'sélectionnez "table de scripts comme > INSÉRER Pour" je peux facilement recréer le squelette de l'instruction INSERT. Cependant depuis que j'ai plusieurs enregistrements à migrer, je préfère éviter d'avoir à insérer les valeurs manuellement.

Donc est-il possible de "automatiquement" obtenir l'INSERTION de script avec les valeurs (en venant de la table cible) rempli?

Je sais ce qui pourrait être fait avec SSIS, mais je me demandais s'il serait possible avec une solution plus rapide.

103voto

RedFilter Points 84190

Vous pouvez le faire avec SSMS.

1 - Cliquez avec le bouton droit sur votre base de données dans l'Explorateur d'objets.
2 - Sélectionnez Tasks / Generate Scripts ...
3 - Sur la page Définir les options de script , cliquez sur le bouton Avancé et assurez-vous que Types de données à script est défini sur Données uniquement .

Le script résultant aura une déclaration USE DATABASE en haut. Remplacez la base de données dans laquelle vous souhaitez insérer les données.

6voto

gbn Points 197263

Utilisez le pack d’outils SSMS gratuit pour "générer des instructions d’insertion"?

Ou dans SSMS (ne pas l'avoir sur ce PC pour confirmer), les assistants d'exportation vous permettent également de "scripter les données"

1voto

Aaron Bertrand Points 116343

Il dépendra des types de données, parce que vous avez besoin pour conditionnellement joindre les valeurs de chaîne entre guillemets ou en fonte, les valeurs numériques des chaînes de caractères. Vous devez également faire face à un problème de caractères:

SELECT 'INSERT INTO dbo.DestinationTable(col1, col2, col3) 
    SELECT ' + CONVERT(VARCHAR(12), col1) + ',' 
        + '''' + REPLACE(col2, '''', '''''') + ''','
        + '''' + REPLACE(col3, '''', '''''') + ''';'
    FROM dbo.SourceTable;

Vyas a une jolie complexité de la procédure stockée à cet effet.

Bien sûr, vous pouvez faire tout cela beaucoup plus facile en disant tout simplement:

INSERT INTO OtherDatabase.dbo.DestinationTable(col1, col2, col3)
    SELECT col1, col2, col3 FROM dbo.SourceTable;

En d'autres termes, vous n'avez pas besoin de "script" un insert, vous pouvez l'exécuter...

0voto

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X