J'ai plusieurs fichiers sql
et je veux importer tous simultanément dans une base de données MySQL.
Je vais à PHPMyAdmin
, accéder à la base de données, cliquez sur import
, sélectionnez un fichier et importez-le. Lorsque j'ai plusieurs fichiers, cela prend beaucoup de temps.
Je voudrais savoir s'il existe un meilleur moyen d'importer plusieurs fichiers, quelque chose comme un fichier qui importera les autres fichiers ou similaire.
J'utilise WAMP
et j'aimerais une solution qui ne nécessite pas l'installation de programmes supplémentaires sur mon ordinateur.
Merci BlackCharly, j'ai trouvé comment faire sous Windows, ouvrir un terminal, aller dans le dossier de contenu et écrire:
copy /b *.sql all_files.sql
Ceci concate tous les fichiers en un seul, ce qui rend très rapide l’importation avec PhpMyAdmin
Comme le dit BlackCharly sous Linux,
cat *.sql > all_files.sql
Dernier point mais non le moindre, veuillez prendre en compte le commentaire @mosh:
Si all_files.sql est déjà présent, cela peut entraîner une copie récursive du fichier sur lui-même sans fin! Mettez le résultat dans un .__ séparé. répertoire pour être en sécurité.
C'est le moyen le plus simple que j'ai trouvé.
Sous Windows (powershell):
cat *.sql | C:\wamp64\bin\mysql\mysql5.7.21\bin\mysql.exe -u user -p database
Vous devrez insérer le chemin d'accès à votre WAMP - MySQL
ci-dessus, j'ai utilisé mon chemin d'accès système.
Sous Linux (Bash):
cat *.sql | mysql -u user -p database
Goto cmd
Tapez la commande Invite C:\users\Usersname> cd [chemin du dossier des tables .sql].
Appuyez sur Entrée
Ex: C:\utilisateurs\nom d'utilisateur> cd E:\projet\base de données
Tapez l'invite de commande
C:\users\Usersname> [nom du lecteur (répertoire) du dossier. Sql]
Appuyez sur Entrée
Ex: C:\users\Usersname> E:
Tapez la commande Invite pour la marge de tous les fichiers .sql (table) dans un seul fichier.
copy/b * .sql newdatabase.sql
Appuyez sur Entrée
EX: E:\projet\base de données> copier/b * .sql newdatabase.sql
Vous pouvez voir Fusionner plusieurs fichiers .sql (fichier) dans un seul fichier dans votre dossier de répertoires.
Ex: E:\project\database
Je sais que cela fait un peu plus de deux ans ... mais je cherchais un moyen de le faire et je n'étais pas très heureux de la solution proposée (cela fonctionne bien, mais je voulais un peu plus d'informations au moment de l'importation) . Lorsque vous combinez tous les fichiers SQL en un seul fichier, vous ne recevez aucune sorte de mise à jour de progression.
J'ai donc continué à chercher une réponse et j'ai pensé que ce serait un bon endroit pour publier ce que j'ai trouvé pour les futurs utilisateurs à la recherche de la même réponse. Voici une ligne de commande sous Windows permettant d'importer plusieurs fichiers SQL à partir d'un dossier. Vous l’exécutez à partir de la ligne de commande dans le répertoire où se trouve mysql.exe.
for /f %f in ('dir /b <dir>\<mask>') do mysql --user=<user> --password=<password> <dbname> < <dir>\%f
Avec quelques valeurs supposées (à titre d'exemple):
for /f %f in ('dir /b c:\sqlbackup\*.sql') do mysql --user=mylogin --password=mypass mydb < c:\sqlbackup\%f
Si vous avez deux jeux de sauvegardes SQL dans le dossier, vous pouvez remplacer le * .sql par quelque chose de plus spécifique (comme mydb _ *. Sql).
Entrez le shell mysql comme ceci.
mysql --Host = localhost --user = nom d'utilisateur --password --database = db
Ensuite, utilisez la commande source et un point-virgule pour séparer les commandes.
source file1.sql; fichier source2; fichier source3;
Enregistrez ce fichier au format .bat et exécutez-le, modifiez les variables entre parenthèses ...
@echo off
title Mysql Import Script
cd (Folder Name)
for %%a in (*) do (
echo Importing File : %%a
mysql -u(username) -p(password) %%~na < %%a
)
pause
s'il ne s'agit que d'une base de données, modifiez (%% ~ na) avec le nom de la base.
La solution la plus simple consiste à copier/coller tous les fichiers SQL en un.
Vous ne pouvez pas ajouter de sql markup pour l’importation de fichiers (les fichiers importés seront dans votre ordinateur, pas sur le serveur, et je ne pense pas que MySQL gère certains import de balisage pour les fichiers SQL externes) .
Il suffit de taper la commande ci-dessous sur votre commande Invite et il liera tous les fichiers SQL en un seul fichier SQL,
c:/xampp/mysql/bin/sql/ type *.sql > OneFile.sql;