Présentation
Seul un nombre limité d'applications lisent les tables MySQL brutes. Un fichier CSV est beaucoup plus susceptible de fonctionner avec différentes applications de base de données. CSV est un format standard pour les bases de données dans lequel une virgule distingue les valeurs de différentes lignes et colonnes. L'avantage supplémentaire des fichiers CSV est qu'ils sont lisibles par l'homme.
Ce guide détaillé vous montrera comment exporter une base de données MySQL vers un fichier CSV.
Prérequis
- Accès à une ligne de commande/fenêtre de terminal
- Compte utilisateur avec privilèges root ou sudo
- Un compte utilisateur MySQL avec des privilèges root
- Compte phpMyAdmin préconfiguré (facultatif)
Exporter MySQL vers CSV avec phpMyAdmin
L'outil phpMyAdmin fournit une interface graphique pour gérer vos bases de données MySQL. Vous pouvez l'utiliser pour exporter n'importe laquelle de ses bases de données suivies vers un fichier CSV.
- Commencez par vous connecter à phpMyAdmin.
- Ensuite, cliquez sur Bases de données bouton sur la bannière supérieure.
- Dans la liste des bases de données, cliquez sur le lien vers la base de données que vous souhaitez exporter. Dans cet exemple, nous avons sélectionné l'utilisateur base de données.
- L'écran suivant affiche une liste des tables de cette base de données. Cochez les cases des tableaux que vous souhaitez exporter.
- Cliquez sur Exporter bouton sur la bannière.
- Laisser la méthode d'exportation définir tel quel. Utilisez le Format menu déroulant pour sélectionner CSV, puis cliquez sur Aller .
- Une boîte de dialogue vous invite à spécifier l'emplacement où vous souhaitez enregistrer le fichier CSV.
Exporter de MySQL vers CSV à l'aide de la ligne de commande
Vous pouvez effectuer une exportation simple en sélectionnant toutes les données d'un tableau et en spécifiant l'emplacement où les enregistrer.
Commencez par ouvrir le shell MySQL, puis passez à la base de données que vous souhaitez exporter.
Saisissez l'instruction suivante :
SELECT * FROM myTable
INTO OUTFILE '\tmp\myExportFile.csv'
FIELDS ENCLOSED BY '"'
TERMINATED BY ';'
ESCAPED BY '"'
LINES TERMINATED BY '\r\n';
Remplacer myTable
avec le nom réel de la table de votre base de données. Vous pouvez remplacer \tmp\myExportFile.csv
avec tout autre nom de fichier ou emplacement. Assurez-vous de conserver le .csv
nom de fichier à la fin.
Options supplémentaires pour l'exportation depuis MySQL
Pour spécifier des ensembles de données individuels à exporter depuis une table :
SELECT column1, column2, column3, column4
FROM myTable
WHERE column2 = 'value';
Remplacer column1
(et le reste) avec les noms réels des colonnes que vous souhaitez exporter. Assurez-vous d'utiliser le FROM
commande pour spécifier la table à partir de laquelle vous exportez. Le WHERE
L'instruction est facultative et permet d'exporter uniquement les lignes contenant une valeur spécifique. Remplacer value
avec la valeur réelle que vous souhaitez exporter. Par exemple :
SELECT order_date, order_number, order_status
FROM current_orders
WHERE order_status='pending';
Fichier CSV d'exportation et d'horodatage
Utilisez la commande suivante pour exporter vers un fichier CSV et ajoutez un horodatage pour l'heure à laquelle le fichier a été créé :
SET @TS = DATE_FORMAT(NOW(),'_%Y_%m_%d_%H_%i_%s');
SET @FOLDER = '\tmp';
SET @PREFIX = 'myTable';
SET @EXT = '.csv';
SET @CMD = CONCAT("SELECT * FROM myTable INTO OUTFILE '",@FOLDER,@PREFIX,@TS,@EXT,
"' FIELDS ENCLOSED BY '\"'
TERMINATED BY ';'
ESCAPED BY '\"'","
LINES TERMINATED BY '\r\n';");
PREPARE statement FROM @CMD;
EXECUTE statement;
Comme d'habitude, remplacez myTable
avec le nom réel de la table que vous exportez.
Exporter avec des en-têtes de colonne
Utilisez un UNION
déclaration pour ajouter des en-têtes de colonne au fichier exporté :
(SELECT 'column1','column2','column3','column4')
UNION
(SELECT column1, column2, column3, column4
FROM myTable
INTO OUTFILE '\tmp\myExportFile.csv'
FIELDS ENCLOSED BY '"' TERMINATED BY ';' ESCAPED BY '"'
LINES TERMINATED BY '\r\n')
Traitement des valeurs NULL
S'il y a des valeurs nulles (vides) dans la base de données, ce processus les exporte sous la forme de la lettre N
. Vous pouvez remplacer NULL
valeurs avec une autre chaîne de texte qui a plus de sens :
SELECT column1, column2, IFNULL(column3, 'N/A')
FROM myTable INTO OUTFILE '\tmp\myExportFile.csv'
FIELDS ENCLOSED BY '"'
TERMINATED BY ';'
ESCAPED BY '"' LINES
TERMINATED BY '\r\n');
Dans ce cas, le IFNULL
la commande recherche les valeurs vides dans column3
. Lorsqu'il les trouve, il les remplace par la chaîne de texte N/A
.
Exporter MySQL vers CSV à l'aide de mysqldump
Vous pouvez utiliser le mysqldump application pour exporter votre base de données MySQL vers un fichier CSV. Entrez ce qui suit dans une invite de commande :
mysqldump --tab=/var/lib/mysql-files/ --fields-enclosed-by='"' --fields-terminated-by=',' --lines-terminated-by='\n' myTable
Cette commande crée une copie de la base de données myTable
dans le /var/lib/mysql-files
.
Exporter MySQL vers CSV à l'aide du moteur CSV
Dans certains cas, vous pouvez utiliser le moteur CSV de MySQL pour modifier la table. Cette méthode ne fonctionnera pas si une table MySQL a un index, ou si la table utilise auto_increment . Utilisez la commande suivante :
ALTER TABLE myTable ENGINE=CSV;
Cette instruction modifie le format de la base de données en CSV. Vous pouvez ensuite copier le fichier CSV sur un autre système.