web-dev-qa-db-fra.com

Exécuter tous les fichiers SQL dans un répertoire

J'ai un certain nombre de fichiers .sql que je dois exécuter pour appliquer les modifications apportées par d'autres développeurs sur une base de données SQL Server 2005 . Les fichiers sont nommés selon le modèle suivant:

0001 - abc.sql
0002 - abcef.sql
0003 - abc.sql
...

Existe-t-il un moyen de les exécuter tous en une fois?

101
K.A.D.

Créez un fichier .bat avec la commande suivante:

for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause

Placez ce fichier .bat dans le répertoire à partir duquel vous voulez exécuter les fichiers .sQL, double-cliquez sur le fichier .bat et vous avez terminé!

121
Vijeth

Utilisez POUR . A partir de l'invite de commande:

c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
65
Remus Rusanu
  1. Dans SQL Management Studio, ouvrez une nouvelle requête et tapez tous les fichiers comme ci-dessous.

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  2. Accédez au menu Requête de SQL Management Studio et assurez-vous que le mode SQLCMD est activé.
  3. Cliquez sur Mode SQLCMD. les fichiers seront sélectionnés en gris comme ci-dessous

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  4. Maintenant exécuter
22

Assurez-vous que SQLCMD est activé en cliquant sur l’option Query> SQLCMD dans le studio de gestion.

  1. Supposons que vous ayez quatre fichiers .sql (script1.sql,script2.sql,script3.sql,script4.sql) dans un dossier c:\scripts.

  2. Créez un fichier de script principal (Main.sql) avec les éléments suivants:

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    :r c:\Scripts\script4.sql
    

    Enregistrez le fichier Main.sql dans c:\scripts.

  3. Créez un fichier de commandes nommé ExecuteScripts.bat avec les éléments suivants:

    SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql
    PAUSE
    

    N'oubliez pas de remplacer <YourDatabaseName> par la base de données sur laquelle vous souhaitez exécuter vos scripts. Par exemple, si la base de données est "Employé", la commande serait la suivante:

    SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
    PAUSE
    
  4. Exécutez le fichier de commandes en double-cliquant dessus.

18
Ashish Gupta

Vous pouvez utiliser ApexSQL Propagate . C'est un outil gratuit qui exécute plusieurs scripts sur plusieurs bases de données. Vous pouvez sélectionner autant de scripts que nécessaire et les exécuter sur une ou plusieurs bases de données (même sur plusieurs serveurs). Vous pouvez créer et sauvegarder une liste de scripts, puis sélectionner cette liste chaque fois que vous souhaitez exécuter ces mêmes scripts dans l'ordre créé (vous pouvez également ajouter plusieurs listes de scripts):

 Select scripts

Lorsque les scripts et les bases de données sont sélectionnés, ils apparaissent dans la fenêtre principale. Il vous suffit de cliquer sur le bouton "Exécuter" pour exécuter tous les scripts sur les bases de données sélectionnées dans l'ordre indiqué:

 Scripts execution

9
Kevin L

Requête générale

enregistrer les lignes ci-dessous dans le bloc-notes avec le nom batch.bat et les placer dans le dossier où se trouvent tous vos fichiers de script

 for %%G in (*.sql) do sqlcmd /S servername /d databasename  -i"%%G"
    pause

EXEMPLE

pour %% G dans (* .sql), exécutez sqlcmd/S NFGDDD23432 / dEMPLYEEDB-i "%% G" pause.

si jamais la connexion échoue, veuillez utiliser le code ci-dessous avec nom d'utilisateur et mot de passe

for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause

pour %% G dans (* .sql), exécutez sqlcmd/S NE8148server / dEMPLYEEDB-U Scott -P tigre -i "%% G"pause

Après avoir créé le fichier bat dans le dossier contenant vos fichiers de script, il vous suffit de cliquer sur le fichier de batte pour exécuter vos scripts.

6
Lijo

J'ai écrit un utilitaire open source en C # qui vous permet de faire glisser de nombreux fichiers SQL et de les exécuter sur une base de données.

L'utilitaire présente les caractéristiques suivantes:

  • Drag And Drop fichiers de script 
  • Exécuter un répertoire de fichiers de script 
  • Sql Script sort des messages pendant l'exécution 
  • Script réussi ou échoué de couleur verte et rouge (jaune pour l'exécution) 
  • Option d'arrêt en cas d'erreur 
  • Option de script ouvert en cas d'erreur 
  • Exécuter un rapport avec le temps pris pour chaque script 
  • Durée totale 
  • Tester la connexion à la base de données 
  • Asynchrone 
  • .Net 4 & testé avec SQL 2008 
  • Fichier exe unique 
  • Tuer la connexion à tout moment 
5
Clinton Ward

Ce que je sais, vous pouvez utiliser les commandes osql ou sqlcmd pour exécuter plusieurs fichiers SQL. L'inconvénient est que vous devrez créer un script pour les deux commandes. 

Utilisation de SQLCMD pour exécuter plusieurs scripts SQL Server

OSQL (pour SQL Server 2000)

http://msdn.Microsoft.com/en-us/library/aa213087(v=SQL.80).aspx

2
Aseem Gautam

Si vous pouvez utiliser Interactive SQL:

1 - Créez un fichier .bat avec ce code:

@ECHO OFF ECHO
for %%G in (*.sql) do dbisql -c "uid=dba;pwd=XXXXXXXX;ServerName=INSERT-DB-NAME-HERE" %%G
pause

2 - Modifiez le pwd et ServerName.

3 - Placez le fichier .BAT dans le dossier contenant les fichiers .SQL et exécutez-le.

0
Alberto Labuto
@echo off
cd C:\Program Files (x86)\MySQL\MySQL Workbench 6.0 CE

for %%a in (D:\abc\*.sql) do (
echo %%a
mysql --Host=ip --port=3306 --user=uid--password=ped < %%a
)

Étape 1: les lignes ci-dessus sont copiées dans le bloc-notes et sauvegardées sous forme de batte.

step2: Dans le dossier d lecteur abc dans tous les fichiers SQL dans les requêtes exécutées dans le serveur SQL.

step3: Indiquez votre adresse IP, votre identifiant et votre mot de passe.

0
Nagaraju Chimmani

Pour exécuter chaque fichier SQL sur le même répertoire, utilisez la commande suivante:

ls | awk '{print "@"$0}' > all.sql

Cette commande créera un fichier SQL unique avec les noms de chaque fichier SQL du répertoire ajouté par "@".

Après que le all.sql soit créé, exécutez simplement all.sql avec SQLPlus, cela exécutera chaque fichier SQL dans le all.sql.

0
user7609040

Vous pouvez créer un seul script qui appelle tous les autres.

Mettez ce qui suit dans un fichier de commandes:

@echo off
echo.>"%~dp0all.sql"
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"

Lorsque vous exécutez ce fichier de commandes, il crée un nouveau script nommé all.sql dans le même répertoire que celui où se trouve le fichier de commandes. Il recherchera tous les fichiers avec l'extension .sql dans le même répertoire que le fichier de traitement par lots.

Vous pouvez ensuite exécuter tous les scripts à l'aide de sqlplus user/pwd @all.sql (ou étendre le fichier de commandes pour appeler sqlplus après avoir créé le script all.sql).

0
rahul jain