Restauration d'un dump SQL MySQL multivolume. Nous effectuons un dump (sauvegarde) de la base de données à l'aide de l'utilitaire mysqldump. Qu'est-ce qu'une décharge

./mysql -u -p H < db_dump-file

2018-12-04T00:00Z

2018-12-11T00:00Z

Lorsque nous créons un fichier de dump avec mysqldump, il contient un gros script SQL pour recréer le contenu de la base de données. Nous le restaurons donc en exécutant la ligne de commande du client MySQL :

Mysql -uroot -p

(où root est notre nom d'utilisateur administrateur pour MySQL) et après nous être connectés à la base de données, nous avons besoin de commandes pour créer la base de données et lire le fichier :

Créer une base de données new_db ; utilisez new_db ; \. dumpfile.sql

Les détails varient en fonction des options utilisées lors de la création du fichier de vidage.

2018-12-18T00:00Z

Il vous suffit d'exécuter ceci :

mysql -p -u< db_backup.dump

Si le dump contient plusieurs bases de données, vous devez omettre le nom de la base de données :

mysql -p -u< db_backup.dump

Pour exécuter ces commandes, ouvrez une invite de commande (sous Windows) et cd dans le répertoire où mysql.exe contient l'exécutable mysql.exe (vous devrez peut-être y réfléchir un peu, cela dépendra de la façon dont vous avez installé mysql, c'est-à-dire autonome ou dans le cadre d'un package tel que WAMP). Lorsque vous êtes dans ce répertoire, vous devez simplement saisir la commande.

2018-12-25T00:00Z

Cela devrait être aussi simple que d'exécuter ceci :

MySQL -u -p< db_backup.dump

Si le dump comporte une seule base de données, vous devrez peut-être ajouter une ligne en haut du fichier :

UTILISER ;

S'il s'agit d'un dump de plusieurs bases de données, les instructions use sont déjà là.

Pour exécuter ces commandes, ouvrez une invite de commande (sous Windows) et cd dans le répertoire où mysql.exe contient l'exécutable mysql.exe (vous devrez peut-être y réfléchir un peu, cela dépendra de la façon dont vous avez installé mysql, c'est-à-dire autonome ou dans le cadre d'un package tel que WAMP). Une fois que vous êtes dans ce répertoire, vous pouvez simplement taper la commande comme je l'ai fait ci-dessus.

2019-01-01T00:00Z

Commande monoligne pour restaurer le SQL généré à partir de mysqldump

MySQL -u -p E " source

2019-01-08T00:00Z

En utilisant un fichier de dump de 200 Mo créé sous Linux pour restaurer sous Windows avec MySQL 5.5, j'ai eu plus de succès avec

Fichier source.sql

approche en ligne de commande mysql plutôt que d'utiliser

mysql< file.sql

approche en ligne de commande provoquant une erreur "Le serveur est parti" de 2006 (sous Windows)

Curieusement, le service créé lors de l'installation (mysql) fait référence à un fichier my.ini qui n'était pas là. J'ai copié le "gros" fichier d'exemple dans my.ini, que j'avais déjà modifié avec l'augmentation recommandée.

Mes valeurs

Max_allowed_packet = 64 M interactive_timeout = 250 wait_timeout = 250

2019-01-15T00:00Z

À titre d'exemple spécifique de la réponse précédente :

J'avais besoin de restaurer une sauvegarde pour pouvoir l'importer/migrer vers SQL Server. J'ai uniquement installé MySql, mais je ne l'ai pas enregistré en tant que service ni ajouté à mon chemin car je n'ai pas besoin de l'exécuter.

J'ai utilisé l'Explorateur Windows pour placer mon fichier de vidage dans C:\code\dump.sql. Ensuite, ouvrez MySql à partir de l'élément du menu Démarrer. J'ai créé la base de données, puis exécuté la commande source avec le chemin complet comme ceci :

Mysql> créer une base de données temporaire mysql> utiliser temp mysql> source c:\code\dump.sql

Le dump de la base de données MySQL est familier à tous les webmasters. Ce n'est pas surprenant, car cette procédure est réalisée dans le cadre d'une sauvegarde ou d'un transfert d'une base de données vers un autre hébergement.

Par conséquent, savoir comment vider une base de données MySQL est important pour tout développeur Web. Qu'est-ce que c'est? Il s'agit d'un fichier contenant des instructions en langage SQL, grâce auquel une copie exacte de votre base de données est créée tant dans le contenu que dans la structure. Dans quelles situations devez-vous vider la base de données MySQL :

  • Transférer une base de données vers un autre serveur

Un dump peut être nécessaire si vous envisagez de transférer votre base de données vers un autre hébergement. Avec son aide, vous pouvez recréer une copie exacte de l'ancienne base de données sans aucune difficulté.

  • Sauvegarde de la base de données

Hébergement de sites Web virtuels, qui comprend des sauvegardes quotidiennes. Des sauvegardes régulières des données vous éviteront beaucoup d'efforts et de nerfs en cas de situations imprévues. Une expérience infructueuse avec un site ou une panne de serveur peut entraîner la perte de l'intégralité de la base de données, et seul un vidage rapide vous aidera dans cette situation. Naturellement, il ne peut pas être stocké sur le même serveur que la base de données principale, car sinon vous perdrez toutes les informations sans possibilité de les récupérer.

Comment dumper une base de données MySQL ?

Il existe différentes manières de créer un dump, et ci-dessous nous examinerons les principales options :

  • Faire un dump à l'aide de la console MySQL

Dans ce cas, pour créer un vidage de base de données, utilisez la ligne de commande ou la console MySQL, où vous devez saisir la commande mysqldump -uuser -ppass db_name > file_to_save. Dans ce cas, user est le nom de l'utilisateur de la base de données disposant des droits suffisants pour créer un dump, pass est le mot de passe de la base de données, db_name est le nom de la base de données souhaitée et au lieu de file_to_save, vous devez spécifier le nom du fichier. où le dump sera enregistré.

Après avoir entré correctement la commande, un fichier avec l'extension .sql apparaîtra à l'emplacement spécifié, qui est un vidage de base de données. Cette méthode est la plus universelle et la plus populaire parmi les utilisateurs de systèmes Unix, par exemple Ubuntu, si vous devez soudainement transférer MySQL vers un autre serveur. Dans le même cas, si vous ne connaissez pas les commandes de la console, vous aurez besoin d'un logiciel supplémentaire.

  • Faire un dump de base de données avec phpMyAdmin

Si vous préférez utiliser un logiciel supplémentaire, vous pouvez vider la base de données à l'aide de PHP en utilisant, par exemple, phpMyAdmin. Pour ce faire, suivez ces étapes :

  1. Connectez-vous à phpMyAdmin.
  2. Sélectionnez la base de données souhaitée dans la liste générale.
  3. Connectez-vous à la base de données sélectionnée.
  4. Après autorisation, la colonne de gauche contiendra la base de données elle-même et les informations de service qui s'y rapportent. Vous devez maintenant resélectionner votre base de données.
  5. Allez dans l'onglet "Exporter", puis activez certains paramètres, à savoir :

    Ajouter DROP TABLE/VIEW/PROCEDURE/FUNCTION/EVENT

    Cette option vous permettra de restaurer en toute sécurité la base de données MySQL à partir d'un dump à l'avenir. Toutes les tables portant les mêmes noms seront d'abord supprimées, c'est-à-dire que la commande dpop sera exécutée, puis remplacée par des tables similaires de votre dump. En conséquence, vous vous protégerez de la création de tables en double et, par conséquent, d'un fonctionnement incorrect de la base de données.

    Pack avec zip

    L'activation de cette option garantira que votre vidage de base de données est archivé et vous vous retrouverez avec un fichier avec une extension .zip. Cela vous permettra de sauvegarder rapidement et correctement le dump même avec une faible vitesse de connexion.

  6. Vous recevez un dump de base de données prêt à l'emploi. Si tout a été fait correctement, vous aurez alors une archive contenant un fichier avec l'extension .sql - un dump de la base de données dont vous avez besoin.

Vous savez maintenant comment effectuer un dump MySQL si vous devez soudainement transférer la base de données vers un autre serveur ou si toute autre situation survient dans laquelle une sauvegarde de la base de données peut être utile. Bien entendu, il existe de nombreuses autres façons de créer un dump, en plus de celles décrites ci-dessus. Mais même connaître les options les plus simples et les utiliser régulièrement dans la pratique vous permettra de vous sentir plus en confiance dans toute situation imprévue, car il suffira simplement de déployer un dump MySQL et de restaurer rapidement toutes les bases de données.

Si vous décidez d'acheter un serveur dédié auprès de notre société, vous disposez alors de 100 Go sur un serveur de sauvegarde à distance, sur lequel vous pouvez configurer une sauvegarde automatique des sites et des bases de données. Dans ce cas, vous aurez toujours un nouveau dump MySQL.

Dans le cas où vous rencontrez toujours des difficultés pour créer un dump et changer de serveur ou d'hébergement, vous pouvez contacter le support technique de RigWEB, et il répondra à toutes vos questions dans le cadre de sa compétence. Si, pour une raison quelconque, vous ne pouvez pas le faire vous-même, nos spécialistes transféreront gratuitement votre site Web d'un autre hébergement vers le nôtre. Nous assurerons également des sauvegardes régulières et la fourniture en temps opportun de copies à jour de vos données si nécessaire. En utilisant l'hébergement professionnel RigWEB, vous pouvez être sûr d'une protection maximale de votre projet contre toute surprise !

Faire un dump de base de données (sauvegarde) est très important. C'est pourquoi j'ai fait quelques commentaires avec des exemples pour un utilitaire aussi excellent que mysqldump.

mysqldump - un utilitaire qui vous permet de vider le contenu d'une base de données ou d'un ensemble de bases de données pour créer une copie de sauvegarde ou envoyer des données à un autre serveur de base de données SQL (pas nécessairement un serveur MySQL). Le dump contiendra un ensemble de commandes SQL pour créer et/ou remplir des tables.

mysqldump-u racine -p -f nom_base de données >

Avec cette commande on fait une sauvegarde de la base de données sous le nom name_database vers le lecteur C dans le fichier mydb_backup_name_database.txt

Vous n'êtes pas obligé de créer le fichier ; MySQL le créera lui-même.

mysql-u racine -p -f nom_base de données< C:\mydb_backup_name_database.txt

Avec cette commande, nous importons les données de sauvegarde du fichier C:\mydb_backup_name_database.txt

Remarque : -f, --force est une option qui spécifie de continuer même si une erreur SQL est reçue, c'est-à-dire ignorer les erreurs. Par exemple, si une ligne identique existe déjà dans le tableau.

Pour éviter de demander un mot de passe, vous devez l'écrire immédiatement après -p, c'est-à-dire sans espaces. Si le mot de passe Mot de passe, alors l'exemple ressemblerait à ceci :

mysqldump-u racine -p Mot de passe-f nom_database > C:\mydb_backup_name_database.txt

Si vous utilisez souvent cette commande, il est préférable de créer un utilisateur distinct avec les droits nécessaires afin de réduire la visibilité du mot de passe root.

Examinons les paramètres mysqldump plus subtils :

--bases de données permet à mysqldump d'inclure les commandes CREATE DATABASE /*!33333 IF NOT EXISTS*/ DBNAME et USE DBNAME dans le script de récupération. Cela vous permettra de créer des bases de données fonctionnelles à partir de zéro. Autrement dit, sans utiliser --databases, il est supposé que l'utilisateur restaure une seule base de données et spécifie explicitement où les données restaurées doivent être placées. Si une sauvegarde est créée dans le but de créer une copie entièrement fonctionnelle des données, par exemple sur un autre serveur MySQL, vous devez alors utiliser cette clé ;

--toutes les bases de données vous permet de faire des copies de toutes les bases de données qui existent sur un serveur MySQL donné. Si vous devez faire des copies de certaines bases de données uniquement, il vous suffit de les spécifier séparées par un espace lors de l'appel de mysqldump depuis la ligne de commande (voir ci-dessus) ;

Clé --aide. Le programme mysqldump existe en plusieurs versions. Vous pouvez voir quelles fonctionnalités sont spécifiquement prises en charge par votre version à l'aide de cette clé ;

--add-drop-table- un commutateur qui forcera mysqldump à ajouter une commande drop table au script résultant avant de créer des tables. Cela vous permettra d'éviter certaines erreurs lors de la restauration d'une base de données à partir d'une sauvegarde. Bien entendu, vous devez tenir compte du fait que les tables situées dans la copie de travail (si des tables portant le même nom existent dans la sauvegarde) seront supprimées de la base de données principale et recréées à partir de la sauvegarde avant d'être restaurées à partir de la sauvegarde ;

--pas de données. En utilisant cette clé, vous pouvez rapidement faire une copie de la structure table/base de données sans les données elles-mêmes. Par exemple, vous avez créé une table complexe et souhaitez conserver sa structure pour l'avenir, mais vous n'avez pas besoin des données elles-mêmes qui se trouvent dans cette table dans une copie de sauvegarde ;

--result-file=...- ce commutateur peut être utilisé pour rediriger la sortie vers un fichier. Vous pouvez utiliser la redirection Unix standard avec la commande ">", ou vous pouvez utiliser cette clé. Qui aime quoi ?

Une autre astuce très utile pour utiliser mysqldump dans un environnement d'hébergement. En règle générale, lors de l'utilisation de l'hébergement, certaines restrictions sont imposées à l'utilisateur. Par exemple, vous ne pouvez pas occuper plus d'une certaine quantité de mémoire physique (RAM, RAM). mysqldump met par défaut toutes les données reçues du serveur MySQL en mémoire, puis les écrit sur le disque. Par conséquent, si le fournisseur vous permet d'emprunter, par exemple, 30 Mo de mémoire et que la base de données que vous copiez à l'aide de mysqldump occupe 50 Mo, bien sûr, une erreur se produira ici - mysqldump ne pourra pas fonctionner correctement. et plantera, dont il vous informera. Pour "forcer" mysqldump à écrire des données directement sur le disque, plutôt que de les stocker, même temporairement, en mémoire, utilisez la clé --rapide. Cela résoudra le problème.

Voici quelques exemples supplémentaires utiles :

mysqldump -u racine -p Mot de passe-f --jeu de caractères par défaut = cp1251 NOMDB| gzip -c > nom de fichier.txt .gz

Vous pouvez décompresser une telle archive avec la commande :

nom de fichier gunzip.txt.gz

Pour savoir à quelle date la sauvegarde a été effectuée, vous pouvez écrire la commande suivante :

mysqldump -uLOGIN -PPORT -hHOST -pPASS NOMDB | gzip -c > `date "+%Y-%m-%d"`.gz

et si vous devez faire des dumps avec des encodages différents, alors il est pratique d'utiliser des variables :

ensemble CARACTÈREDB=utf8

ensemble NOMDB= violation

mysqldump -u racine -p Mot de passe-f --jeu de caractères par défaut = $ CARACTÈREDB $NOMDB| bzip2 -c > sql. $NOMDBD.`date "+%A-%m-%d"`.bz2

Si vous souhaitez automatiser la suppression des anciennes archives, essayez d'utiliser cron et la commande find, que l'on trouve généralement sous Unix. Courir périodiquement

trouver~/répertoire-avec-archives -name "*.gz" -mtime +7 -exec rm -f () \;

Ainsi, vous supprimerez les archives « plus anciennes » de plus de sept jours.

Salutations, amis ! 🙂

Aujourd'hui, j'ai décidé de poursuivre la conversation sur l'utilisation de MySQL dans la console et de faire attention à la procédure d'exportation d'une base de données MySQL.

Dans cet article, je parlerai de la façon de vider une base de données MySQL, ainsi que de télécharger des données de MySQL vers un fichier Excel et au format csv.

Nous examinerons différentes options pour récupérer des informations à partir de : la création d'un dump d'une ou plusieurs bases de données, l'exportation de données à partir de tables individuelles et de résultats arbitraires SÉLECTIONNER demandes.

Nous parlerons également de la façon de générer des données à partir d'une base de données MySQL dans la console du serveur et dans la ligne de commande MySQL.

Dans cet article, je ne parlerai pas de la façon d'exporter des données à l'aide de phpMyAdmin et d'autres outils visuels.

Premièrement, parce qu'il existe déjà suffisamment de matériel sur ce sujet sur Internet. De plus, c’est du matériel de grande qualité, que je n’ai pas envie de copier-coller.

Et, deuxièmement, j'ai moi-même brièvement examiné le processus de sortie d'informations d'une base de données MySQL vers un fichier SQL dans l'un de mes articles, où j'en parlais.

Ainsi, si vous n'êtes pas un développeur professionnel ou un administrateur système susceptible de bénéficier d'informations sur l'utilisation de la console et que vous êtes uniquement venu chercher des instructions sur la façon d'exporter la base de données vers phpMyAdmin, vous pouvez vous limiter à lire les informations sur le lien ci-dessus. .

Je veux que vous me compreniez bien : je ne veux en aucun cas vous offenser, mais je veux juste que vous passiez votre temps avec le maximum d'avantages pour votre entreprise et obteniez ce que vous cherchiez.

Ceci conclut la partie introductive et nous passons à un examen des commandes de console pour créer un vidage de base de données MySQL, que j'ai décidé de trier en fonction de la quantité de données enregistrées : en commençant par l'exportation de la base de données entière, en terminant par les tables individuelles et les résultats de requêtes arbitraires.

Création d'un dump de base de données MySQL via la console

Je voudrais apporter une petite précision au tout début.

Vidage de la base de données est un fichier contenant un ensemble de commandes SQL qui, une fois lancées, vous permet de créer des bases de données et des tables, ainsi que de les remplir d'informations. Le dump est nécessaire pour ceux qui souhaitent télécharger une base de données MySQL afin de la copier sur un autre serveur ou sur un serveur existant.

De plus, si quelqu'un ne le sait pas, une sauvegarde d'une base de données MySQL est essentiellement un dump de celle-ci effectué à une certaine période de temps, ce qui vous permet de restaurer la structure et les données de la base de données si nécessaire.

Exporter des données- il s'agit simplement d'extraire des informations de tableaux sous forme de texte pour un travail ultérieur avec des éditeurs de texte ou graphiques.

Par conséquent, les commandes pour ces actions seront légèrement différentes.

Pour créer un vidage de base de données, MySQL dispose d'un utilitaire intégré appelé mysqldump, qui doit être utilisé en dehors de la ligne de commande MySQL dans la console du serveur ou dans un autre shell.

Ainsi, pour l'option la plus simple et la plus courante - exporter des données d'une base de données spécifique dans la console MySQL pour les transférer vers un autre serveur ou copier en interne, vous devez exécuter la commande suivante :

Mysqldump -u nom d'utilisateur -p nom_base de données > chemin_et_nom_fichier_dump

Cet utilitaire peut créer des sauvegardes de base de données MySQL uniquement sous forme de fichiers avec des commandes SQL, donc quelle que soit l'extension que vous choisissez pour votre fichier, son contenu sera dans tous les cas le même. Et n'oubliez pas de vérifier les autorisations en écriture du répertoire dans lequel il se trouvera avant d'exporter les informations depuis MySQL afin que le fichier puisse être créé.

Si soudainement vous devez effectuer un dump de toutes les bases de données sur le serveur, utilisez l'option de commande suivante :

Mysqldump -u nom d'utilisateur -p --all-databases > path_and_dump_file_name

Pour dumper seulement quelques bases de données spécifiques, vous devrez appeler mysqldump avec les paramètres suivants :

Mysqldump -u nom d'utilisateur -p --databases nom_base de données1, nom_base de données2, ... > chemin_et_nom_fichier_dump

En conséquence, dans chaque cas, vous recevrez un dump de la base de données MySQL contenant des commandes permettant de créer la structure des tables contenues (champs, leurs types, index, clés, etc.), ainsi que des opérations pour les remplir de données.

Cette option ne convient que pour restaurer et copier des bases de données entières.

Nous parlerons plus loin de la façon de faire des sauvegardes de certaines tables MySQL et d'obtenir leurs données sous une forme lisible.

Vider une table MySQL et exporter des données

Pour créer un dump de certaines tables de la base de données MySQL, nous aurons besoin du même utilitaire mysqldump, appelé avec les paramètres suivants :

Mysqldump -u nom d'utilisateur -p nom_base de données nom_table1, nom_table2, ... > chemin_et_nom_fichier_dump

Lors de l'appel de mysqldump, vous pouvez spécifier les tables requises comme valeur de paramètre --tableaux, lorsqu'on utilise le paramètre --bases de données sera ignoré :

Mysqldump -u nom d'utilisateur -p --databases nom_base de données1, nom_base de données2 --tables nom_table1, nom_table2, ... > chemin_et_nom_fichier_dump

L'exemple ci-dessus affichera l'erreur suivante :

Mysqldump : erreur obtenue : 1049 : base de données inconnue "nom_base de données1", lors de la sélection de la base de données

Comme vous pouvez le constater, seule la dernière base de données de la liste sera utilisée. En principe, ce comportement est tout à fait logique, car Les tables spécifiées peuvent ne pas apparaître dans toutes les bases de données.

D'accord, nous avons reçu un dump des tables de la base de données MySQL. Il peut être utilisé pour les restaurer ou les copier avec la structure.

Mais que se passe-t-il si vous avez simplement besoin d'obtenir les informations qui y sont stockées et, de préférence, sous une forme lisible afin de pouvoir les envoyer au responsable et les visualiser dans un éditeur de texte ou de feuille de calcul classique ? MySQL dispose également d'outils pour cela.

La possibilité d'appeler le service public nous aidera à réaliser nos projets mysql depuis la console avec certains paramètres :

Mysql -u nom d'utilisateur -p nom_base de données -e "SELECT * FROM nom_table"

Cette commande nous permettra d'exécuter une requête sur la base de données requise et d'afficher le résultat sur la console sans passer par la ligne de commande MySQL.

Eh bien, afin de ne pas afficher de données sur la console, mais de les écrire dans un fichier, vous devez compléter la commande comme suit :

Mysql -u nom d'utilisateur -p -e "SELECT * FROM nom de table" > chemin_et_nom de fichier

Grâce à ces constructions, nous pouvons non seulement obtenir des données stockées dans tous les champs du tableau, mais aussi dans des champs spécifiques. Pour ce faire, remplacez simplement les caractères génériques (*) par ceux requis, séparés par des virgules.

En conséquence, le résultat sera un fichier texte ordinaire qui contiendra les noms des champs sous la forme d'un en-tête et des informations les concernant pour tous les enregistrements. Il peut être ouvert dans un éditeur de texte classique, quelle que soit la résolution que vous lui donnez lors de sa création.

Si vous souhaitez exporter les données d'une base de données MySQL au format xls ou csv afin que le fichier résultant s'affiche correctement dans les éditeurs de feuilles de calcul, alors nous vous expliquerons comment procéder un peu plus tard :)

Création de sauvegardes et sortie de données à partir d'une base de données MySQL à l'aide de requêtes

Nous avons expliqué comment vider une base de données MySQL - une ou plusieurs, ainsi que des tables individuelles. Mais parfois, dans la pratique, il existe des cas où vous devez exporter un ensemble de données qui ne se limite pas à une seule table. Ou vous devez sélectionner uniquement certaines données du tableau.

Les développeurs de projets d'entreprise sont particulièrement souvent confrontés à ce problème lorsque les managers leur demandent de fournir toutes sortes de données statistiques. Ou lorsque vous devez sauvegarder une certaine partie de la table pour la restaurer rapidement.

Pour la sauvegarde, nous aurons besoin du même utilitaire mysqldump, qu'il faudra appeler ainsi :

Mysqldump -u nom_utilisateur -p nom_base de données nom_table --où "recherche" > chemin_et_nom_fichier_dump

En conséquence, nous recevrons un fichier avec des commandes SQL pour créer une table avec toute sa structure, qui, après création, sera remplie d'informations sélectionnées à l'aide d'une requête de recherche.

Si nous avons juste besoin de récupérer les données stockées dans une ou plusieurs tables, nous devrons alors modifier la commande utilisée dans le cas précédent lors de la récupération de toutes les données de la table, seulement avec quelques précisions :

Mysql -u nom d'utilisateur -p -e "SELECT * FROM nom_table WHERE recherche" > chemin_et_nom_fichier

Comme vous l'avez compris, outre les diverses précisions précisées dans la demande utilisant la directive , vous pouvez utiliser d'autres constructions SQL : REJOINDRE, UNION etc.

Vous pouvez collecter toutes les statistiques que vous souhaitez :)

La même action peut également être effectuée lorsque vous travaillez sur la ligne de commande MySQL à l'aide de la commande suivante :

SELECT * FROM table_base de données WHERE recherche INTO OUTFILE "chemin_et_nom_fichier" ;

Cette commande est spécifiquement conçue pour créer des fichiers avec les résultats d'échantillonnage. De plus, les résultats peuvent non seulement être exportés vers des fichiers, mais également écrits dans des variables, et les données de sortie peuvent être formatées de différentes manières.

Si tel est votre cas, vous pouvez trouver une liste complète des paramètres et des options pour appeler cette commande ici - https://dev.mysql.com/doc/refman/5.7/en/select-into.html

Pour conclure ma brève excursion dans mysqldump, je voudrais proposer une variante d'appel d'une commande avec une liste de paramètres pour créer un vidage optimisé de la base de données et des tables MySQL, en restaurant la base de données et les tables individuelles, ce qui prendra moins de temps qu'avec un appel régulier :

Mysqldump -u nom_utilisateur -h serveur_hôte_ou_IP_MySQL -p --no-autocommit --opt nom_base de données > chemin_et_nom_fichier_dump ;

Par souci d'expérimentation, j'ai utilisé cette option pour vider une base de données MySQL de 143 Mo. La restauration ultérieure a pris 59 secondes, contre 1 minute et 3 secondes lorsque la base de données a été restaurée à partir d'un dump effectué en appelant mysqldump sans paramètres spéciaux.

Je suis d'accord que c'est une petite chose. Mais cela ne concerne qu’une quantité donnée de données. Si vous utilisez cette technique lors de la création d'un dump de plus de 1 Go, la différence sera plus significative.

Si vous rencontrez une telle situation, n'oubliez pas d'archiver d'abord le dump de la base de données MySQL. Le meilleur est tar.gz. La récupération prendra alors encore moins de temps.

Exporter des données de MySQL vers des fichiers Excel et CSV

Ce n'est pas pour rien que j'ai combiné les informations sur la sortie des informations de MySQL dans ces deux formats en un seul bloc, car... elles sont très similaires, elles s'utilisent à peu près de la même manière (pour structurer les informations sous forme de tableaux) et les mêmes commandes d'export seront appelées.

Comme vous le savez, la seule différence significative entre ces formats est que les extensions xls et xlsx ont des fichiers créés dans Microsoft Office Excel, qui ne fonctionne que sous Windows, tandis que les fichiers csv sont plus universels et les opérations avec eux sont possibles dans de nombreux éditeurs.

Cela ne signifie pas que xls ne s'ouvrira nulle part sauf dans Microsoft Office Excel. Le même OpenOffice confirme le contraire.

Mais pour que cela soit possible, il faut que ce support soit présent dans le produit logiciel. Les fichiers csv sont lisibles même dans un éditeur de texte ordinaire comme le Bloc-notes, mais ce formulaire ne sera pas entièrement lisible.

Permettez-moi de commencer par le fait que vous ne pouvez exporter les résultats des requêtes SQL qu'au format xls ou csv, avec lesquels nous avons appris à travailler plus tôt, car il sera impossible de générer l'intégralité de la base de données dans un seul fichier en une seule opération.

Premièrement, ce n'est pas optimal, car... Il est peu probable qu'un tel fichier s'ouvre s'il y a un grand volume d'informations stockées dans la base de données. Et deuxièmement, il n'est pas clair comment diviser les informations contenues dans le fichier en tables et en champs.

Non, il est bien sûr possible de le faire, mais il est peu probable que cela se fasse avec une seule commande et, en général, il est peu probable que quiconque le fasse dans la console. Je pense qu'à ces fins, vous aurez besoin d'un logiciel spécial ou au moins d'un script.

Si vous savez soudainement comment exporter des informations de l'intégralité de la base de données MySQL vers un ou plusieurs fichiers xls dans la console à la fois, écrivez-le dans les commentaires. Je pense que lire à ce sujet sera utile à beaucoup.

Donc, si nous parlons de la façon d'exporter des données de MySQL vers xls et csv, cela peut être fait directement dans la console du serveur via l'utilitaire mysql ou dans, l'œuvre avec laquelle je vous ai présenté dans mon article précédent.

Commençons dans l'ordre.

Vous pouvez exporter les données d'une base de données MySQL aux formats csv et xls directement dans la console du serveur à l'aide des commandes suivantes.

Sur Linux systèmes :

Mysql -u nom d'utilisateur -d nom_base de données -p -e "SELECT * FROM table_base de données;" | sed "s/"/\"/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > chemin_et_nom_fichier. CSV

En principe, si cela est absolument nécessaire, vous pouvez utiliser cette commande pour exporter des données MySQL vers un fichier Excel. Mais, pour être honnête, je n’ai pas encore abordé ce sujet dans la pratique et je n’ai aucune idée de ce qui va se passer au final, parce que... Je travaille actuellement sous Windows. Si vous utilisez cette commande sous Linux, veuillez écrire dans les commentaires les résultats de votre travail. Je pense que l'information intéressera tout le monde.

Sur Fenêtres:

Malheureusement, l'exportation de données des tables MySQL vers un fichier CSV à l'aide de la commande ci-dessus ne fonctionnera pas dans ce cas, car Windows, contrairement à Linux, ne dispose pas de commande de console intégrée pour travailler avec les threads, comme sed sous Linux.

Bien sûr, vous pouvez l’installer, mais c’est trop compliqué. Alternativement, vous pouvez utiliser CygWin— Émulateur de console Linux pour les systèmes Windows.

C'est bien si vous l'avez déjà installé. Sinon, exporter les données de la base de données MySQL en utilisant la méthode choisie nous posera trop de problèmes.

Mais extraire des informations dans un fichier xls est aussi simple que 5 kopecks :) Il est très simple de le lancer de la manière suivante, que j'ai essayée personnellement :

Mysql -u nom d'utilisateur -d nom_base de données -p -e "SELECT * FROM table_base de données;" > chemin_et_nom_fichier.xls

Ce fichier s'est ouvert dans Microsoft Office Excel sans aucun problème. La seule chose est que lors de son ouverture, un message s'affichait à l'écran avertissant que le format réel du fichier en cours d'ouverture diffère de son extension spécifiée.

Mais lors de la confirmation de l'action, le document s'est ouvert sans difficulté - toutes les informations ont été divisées en cellules sous la forme dans laquelle elles étaient stockées dans le tableau lui-même.

Je ne sais pas, peut-être que si vous effectuez des actions spécifiques dans Microsoft Office Excel, des problèmes surgiront à l'avenir ; Quand j’ai parcouru les données normalement, au moins, je n’ai rien vu d’inhabituel.

Si vous rencontrez des problèmes lors de l'utilisation du fichier xls exporté depuis MySQL, que ce soit dans ce programme ou dans d'autres, faites-le moi savoir dans les commentaires.

En utilisant la méthode décrite ci-dessus, vous pouvez en principe exporter le contenu d’une base de données MySQL vers un fichier csv. Mais alors les données des différents champs du tableau seront écrites en masse, sans délimiteurs, ce qui peut être mal affiché dans divers programmes permettant de travailler avec des tableaux, qui fonctionnent généralement avec des fichiers csv.

Au fait, OpenOffice s'en fiche :) Il a automatiquement délimité les informations obtenues lors de l'exportation du contenu de la base de données MySQL vers xls. Je ne sais pas comment il fait, mais je recommande de l'utiliser :)

Eh bien, le même Microsoft Office Excel affichait toutes les informations correspondant à un enregistrement dans le tableau, en les écrivant dans une cellule sans aucun délimiteur. Je pense que d'autres éditeurs de tableaux feront de même.

Par conséquent, lors de l'exportation d'une base de données MySQL vers des fichiers CSV, vous devez le faire en séparant les informations par des caractères spéciaux compris par les éditeurs.

Et puis j'ai progressivement abordé la deuxième méthode d'exportation de données MySQL vers csv et xls, qui consiste à utiliser la ligne de commande MySQL.

Ainsi, pour exporter les données MySQL vers un fichier csv de cette manière, nous avons besoin de la commande suivante :

SELECT * FROM table_base de données INTO OUTFILE "chemin_et_nom_fichier.csv" CHAMPS TERMINÉS PAR "," ENCLOS PAR """ LIGNES TERMINÉES PAR "\n" ;

À la suite de son exécution, vous recevrez un fichier csv dans le chemin que vous avez spécifié lors de l'appel, qui s'ouvrira correctement dans la plupart des éditeurs de feuilles de calcul modernes. Juste au cas où, je vous rappelle que vous ne devez exécuter cette commande qu'après vous être connecté à la base de données MySQL.

Cette commande est également idéale pour exporter des données MySQL vers un fichier xls pour un affichage correct dans Microsoft Office Excel. Seulement dans ce cas, nous n’avons pas besoin de séparateurs, car ils interféreront avec la division des informations en cellules :

SELECT * FROM table_base de données INTO OUTFILE "chemin_et_nom_fichier.xls" ;

Cependant, dans la pratique, tout n’est pas aussi simple que je l’ai décrit. Lors de l'exécution de la commande, vous pouvez rencontrer l'erreur suivante dans la console qui empêche l'exportation de se terminer :

ERREUR 1290 (HY000) : Le serveur MySQL s'exécute avec l'option --secure-file-priv et ne peut donc pas exécuter cette instruction

Cela est dû au fait que votre serveur MySQL a été démarré avec l'option --secure-file-priv. Personnellement, j'ai rencontré ce problème car pour travailler dans la console, j'utilise le kit de distribution MySQL inclus dans le kit WAMP OpenServer, qui, à son tour, lance le serveur MySQL de cette manière.

Il existe deux manières de résoudre le problème :

  • Modifier les paramètres de démarrage du serveur MySQL
  • Changez le chemin d'accès au fichier d'exportation MySQL final

La première méthode m'a semblé trop compliquée, car... Je devrais me plonger dans la configuration d'OpenServer, qui n'a pas été écrite par moi avec toutes les circonstances qui en découlent 🙂 J'ai donc décidé de prendre la deuxième voie. Si vous rencontrez un problème similaire, répétez après moi.

Vous devez d’abord accéder à la ligne de commande MySQL et exécuter l’une des commandes suivantes :

AFFICHER LES VARIABLES COMME "secure_file_priv" ; SELECT @@GLOBAL.secure_file_priv ;

Le résultat de l'exécution des deux sera la valeur de la variable globale MySQL secure_file_priv, qui contient le chemin d'accès au répertoire à travers lequel les opérations d'exportation et d'importation de données MySQL peuvent être effectuées (à l'avenir, un lien vers un article sur l'importation de données).

Ceux. lors de l'utilisation de commandes CHARGER LES DONNÉES Et SÉLECTIONNER... DANS OUTFILE les fichiers exportés et importés ne peuvent être situés que dans ce répertoire.

Dans mon cas, cette variable était généralement définie sur NUL, parce que Comme je l'ai déjà dit, j'utilise les utilitaires MySQL de la distribution incluse dans OpenServer pour travailler dans la console. Cette valeur indiquait que les opérations d'exportation et d'importation de données MySQL utilisant les commandes spécifiées étaient complètement fermées.

Comme il s'est avéré plus tard, il s'agit d'une situation courante lors de l'utilisation de serveurs WAMP et MAMP en boîte.

Malheureusement, dans mon cas, il n'a pas été possible d'utiliser les méthodes habituelles pour modifier les valeurs des variables globales MySQL :

SET nom_variable = valeur ;

En conséquence, je n'ai vu que l'erreur suivante dans la console :

ERREUR 1238 (HY000) à la ligne 1 : La variable "secure_file_priv" est une variable en lecture seule.

En conséquence, pour changer la valeur d'une variable secure_file_priv et ouvrir les opérations d'exportation et d'importation, je devais accéder au fichier de configuration MySQL mysql.ini, qui se trouve dans le répertoire racine de la distribution MySQL, ou accessible d'une autre manière si MySQL est inclus avec votre WAMP/LAMP/ Construction du serveur MAMP.

À propos, si vous souhaitez modifier le chemin d'accès au répertoire du spool d'échange de fichiers, vous devrez faire de même.

Dans mon cas, cette variable existait déjà dans la config, uniquement sous forme commentée :

Secure-file-priv = "%dprogdir%\\userdata\\temp"

Si vous ne l'avez pas, écrivez-le à partir de zéro dans la section (du moins pour moi, il se trouvait là).

Je l'ai décommenté et j'ai décidé de l'utiliser sous la forme dans laquelle il a été écrit. Ceux. lors de l'exportation de données depuis MySQL et de leur réimportation, mes fichiers seront désormais stockés dans un répertoire c:\openserver\userdata\temp\.

Après avoir modifié la configuration (n'importe laquelle d'ailleurs), n'oubliez pas de redémarrer votre serveur ou un service distinct dont vous avez modifié les paramètres, si possible, pour que les modifications prennent effet !

Pour être sûr, après avoir redémarré le serveur MySQL, affichez à nouveau la variable secure_file_priv et copiez sa valeur dans le presse-papiers.

Et maintenant, nous devons appeler la commande comme au début, seulement avant le nom du fichier dans lequel les informations de la base de données MySQL seront enregistrées, écrivez le chemin stocké dans la variable que nous modifions sous la forme suivante :

SELECT * FROM table_base de données INTO OUTFILE "secure_file_priv_value\file_name.csv" ;

Après cela, l'exportation de données depuis MySQL a fonctionné dans mon cas.

Point important ! Si vous travaillez avec MySQL sous Windows, n'oubliez pas de remplacer « \ » par « / » lorsque vous spécifiez le chemin d'accès au fichier, sinon l'erreur sera --secure-file-priv continuera toujours à apparaître.

Ceci conclut l'article sur la façon de vider une base de données MySQL et ses tables, ainsi que de sortir les données des tables MySQL dans différents formats. Écrivez vos commentaires dans les commentaires et partagez avec tout le monde vos options de script que vous utilisez le plus souvent dans la pratique.

Si l'article vous a plu, vous pouvez remercier l'auteur en repostant l'article sur les réseaux sociaux ou financièrement en utilisant le formulaire ci-dessous afin de pouvoir payer l'hébergement de base.

Bonne chance à tous et à bientôt ! 🙂

P.S.: si vous avez besoin d'un site Internet ou si vous devez apporter des modifications à un site existant, mais que vous n'avez ni le temps ni l'envie pour cela, je peux vous proposer mes services.

Plus de 5 ans d'expérience développement de sites Web professionnels. Travailler avec PHP

C’est étrange, mais il est assez difficile de trouver cette information sur Internet. Un tas de toutes sortes de recommandations de gauche. Mais en fait, tout est simple. Vous pouvez restaurer le dump avec la commande :

# mysql-en haut< mysql_dump.sql.

Au lieu de cela, remplacez le nom d'utilisateur, je fais personnellement la récupération à partir de root. Et dans mysql_dump, sql, en fait, le dump est fait mysqldump utilitaire. L'option -p indique l'autorisation avec un mot de passe ; après avoir appuyé sur Entrée, le mot de passe vous sera demandé. C'est tout, en fait. Vous pouvez faire un dump avec la commande :

# mysqldump-u racine -p -f nom_base de données > fichier_avec_dump.sql

Ici, le paramètre -f database_name spécifie le nom de la base de données que nous enregistrons. Si vous avez besoin de tout, nous le remplaçons par --toutes les bases de données. Cette option indiquera la sauvegarde de toutes les bases de données sur le serveur. Afin de ne pas saisir le mot de passe à chaque fois, vous pouvez le préciser directement dans la commande (cela est nécessaire si vous faites un cron dump depuis un script), cependant, d'un point de vue sécurité, des questions se posent ici, surtout si le le mot de passe est root pour le muscle. Maintenant, si seulement le muscle comprenait au moins les mots de passe md5... Cependant, ce n'est pas un fait qu'il ne comprend pas, je ne sais peut-être pas :)

Auteur

Alex Razgibalov

Un fou, d'âge indéterminé, jouissant d'un délire de persécution. Pathologiquement méfiant, égoïste, autoritaire. Diagnostics secondaires - programmeur et assistant. Il parle anglais à un niveau qui relève de la merde conversationnelle. Je suis également familier avec d'autres langues. Il s'intéresse à tout et à tout le monde, c'est pourquoi ses connaissances dans n'importe quel domaine sont superficielles et superficielles. Le personnage est incontrôlable. Force - 55 degrés.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :