GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exporter les résultats de la requête MySQL au format CSV sous Linux

Interroger à partir d'un MySQL le shell de base de données est toujours amusant et technique jusqu'à ce que vous ayez besoin d'une sortie de base de données enregistrée quelque part pour un accès et une référence faciles; surtout lorsqu'il s'agit de grands ensembles de données.

L'accès rapide aux données vous évite d'avoir à vous connecter à chaque fois à un serveur MySQL via un shell de terminal pour référencer des sorties spécifiques associées à une requête MySQL. Le CSV (Valeur séparée par des virgules ) est un candidat idéal pour résoudre ces types d'interactions répétitives entre l'utilisateur et la base de données.

Le format de fichier CSV est le mieux adapté à l'enregistrement des sorties MySQL en raison de ses principaux attributs, notamment :

  • C'est un format d'enregistrement de données séparées par des virgules largement acceptable.
  • Son avantage supplémentaire lisible par l'homme.
  • Son importation facile dans n'importe quelle application en raison de sa nature en texte brut.
  • Son adaptabilité dans la gestion et l'organisation de grands ensembles de données.

Prérequis

  • Le fichier CSV vous sera associé au MySQL les sorties de requête ne doivent pas encore exister car elles seront générées automatiquement lors de l'exécution d'une sortie de requête MySQL ciblée.
  • Disposer des privilèges root sur la base de données MySQL et sur le système Linux.

Création d'un exemple de table de base de données avec plusieurs valeurs de ligne

Pour que ce didacticiel soit engageant et mieux compris, une table de base de données avec certaines valeurs doit exister. Pour ce tutoriel, vous pouvez soit être sous MySQL ou MariaDB SGBDR. Depuis MariaDB est un fork open-source de MySQL , ces deux RDBMS font référence à la même implémentation de leurs commandes shell de base de données.

Connectez-vous à votre MySQL base de données en tant qu'utilisateur racine de base de données ou avec des informations d'identification d'utilisateur de base de données existantes.

$ sudo mysql -u root -p

Nous allons créer une nouvelle base de données pour héberger notre nouvelle table de base de données.

MariaDB[(none)]> show databases;
MariaDB[(none)]> create database lst_db;
MariaDB[(none)]> use lst_db;

Ensuite, créez la base de données avec quelques tables comme indiqué.

MariaDB[(none)]>  CREATE TABLE lst_projects(
	project_id INT AUTO_INCREMENT, 
	project_name VARCHAR(100) NOT NULL,
	project_category VARCHAR(100) NOT NULL,
	project_manager VARCHAR(100) NOT NULL,
	start_date DATE,
	end_date DATE,
	PRIMARY KEY(project_id)
);

Remplir la table de la base de données MySQL avec des données

Nous avons vérifié que notre table de base de données MySQL créée existe. Il est temps de le remplir avec quelques données.

MariaDB[(none)]> show tables;
MariaDB[(none)]> INSERT INTO 
	lst_projects(project_name, project_category, project_manager, start_date, end_date)
VALUES
	('Marketing','AI','David Guitar','2021-08-01','2021-12-31'),
            ('Copy writing','AI','Viola Guin','2022-01-01','2022-03-31'),
            ('Modeling','Robotics','Mary Atkins','2023-04-01','2023-07-31'),
            ('API','ML','Duncan Reeves','2024-02-01','2024-06-20'),
	('Sales','ML','Anthony Luigi','2025-05-15','2025-11-20');

Confirmons l'existence de nos lst_projects valeurs de table.

MariaDB[(none)]> SELECT * FROM lst_projects;

Exportation des résultats de la requête MySQL au format CSV

Le répertoire temporaire "/var/tmp" donne à MySQL les privilèges de lecture et d'écriture nécessaires. Nous l'utiliserons pour héberger tous les fichiers CSV générés automatiquement à partir des requêtes MySQL.

Plusieurs conditions déterminent comment nous exportons un résultat de requête MySQL vers un format de fichier CSV.

Exportation de toutes les requêtes MySQL vers CSV

Pour exporter cette requête de base de données "SELECT * FROM lst_projects ; ” dans un fichier CSV, nous l'implémenterions de la manière suivante :

MariaDB[(none)]> SELECT * FROM lst_projects
INTO OUTFILE '/var/tmp/get_all_queries.csv'
FIELDS ENCLOSED BY '"'
TERMINATED BY ';'
ESCAPED BY '"'
LINES TERMINATED BY '\r\n';

Essayons de récupérer le fichier généré :

Exporter des tables MySQL vers CSV avec des en-têtes

Cette approche donne à votre fichier CSV généré un aspect professionnel.

MariaDB[(none)]> (SELECT 'Project Name','Project Category','Project Manager','Start Date','End Date')
UNION 
(SELECT project_name,project_category, project_manager, start_date, end_date
FROM lst_projects
INTO OUTFILE '/var/tmp/included_column_headings.csv'
FIELDS ENCLOSED BY '"' TERMINATED BY ';' ESCAPED BY '"'
LINES TERMINATED BY '\r\n');

Récupérons à nouveau le fichier généré :

Comme indiqué, l'exportation CSV de la requête MySQL est désormais bien organisée avec des en-têtes de colonne.

Traitement des valeurs nulles sur les requêtes MySQL exportées

Ajoutons une colonne qui accepte Null valeurs à notre table de base de données lst_projects .

MariaDB[(none)]> ALTER TABLE lst_projects ADD COLUMN project_status VARCHAR(15) AFTER end_date;

Nous n'insérerons aucune valeur dans cette nouvelle colonne pour nous assurer qu'elle reste vide. La requête MySQL s'exporte avec Null les valeurs sont préenregistrées avec “"N” sur le fichier CSV généré. Pour résoudre ce problème, nous pouvons remplacer le “"N” value avec quelque chose de plus pertinent comme “N/A” .

MariaDB[(none)]> (SELECT 'Project Name','Start Date','End Date','Project Status')
UNION 
(SELECT 
    project_name, start_date, end_date, IFNULL(project_status, 'N/A')
FROM
    lst_projects INTO OUTFILE '/var/tmp/with_null.csv' 
    FIELDS ENCLOSED BY '"' 
    TERMINATED BY ';' 
    ESCAPED BY '"' LINES 
    TERMINATED BY '\r\n');

Vérifions le fichier CSV généré.

Exporter des tables MySQL vers CSV avec le nom de fichier d'horodatage

Cela crée une routine de gestion plus précise en ce qui concerne le moment où vos fichiers CSV ont été générés.

MariaDB[(none)]> SET @TS = DATE_FORMAT(NOW(),'_%Y_%m_%d_%H_%i_%s');
SET @FOLDER = '/var/tmp/';
SET @PREFIX = 'lst_projects';
SET @EXT    = '.csv';
SET @CMD = CONCAT("SELECT * FROM lst_projects INTO OUTFILE '",@FOLDER,@PREFIX,@TS,@EXT,
"' FIELDS ENCLOSED BY '\"' TERMINATED BY ';' ESCAPED BY '\"'",
"  LINES TERMINATED BY '\r\n';");
PREPARE statement FROM @CMD;
EXECUTE statement;

Le nom de fichier CSV généré doit maintenant avoir un horodatage.

Sortie de votre MySQL les résultats des requêtes dans un fichier CSV sont un moyen efficace de gérer de grands ensembles de données, car cela vous fait gagner du temps et de l'argent, en particulier lors de la gestion des données pour de grandes organisations.


Linux
  1. Comment copier une base de données MySQL

  2. Comment arrêter un processus dans MySQL

  3. Comment créer une base de données dans MySQL avec MySQL Workbench

  4. Comment importer une base de données d'exportation dans MYSQL MariaDB

  5. comment se connecter à mysql et interroger la base de données à partir du terminal linux

Comment installer l'outil de gestion de base de données Adminer MySQL sur Alma Linux 8

Comment obtenir la liste des comptes utilisateur MySQL sous Linux

Comment convertir xlsx au format CSV sous Linux

Comment vérifier les privilèges utilisateur MySQL sous Linux

Comment renommer le nom de la base de données MySQL sous Linux

Comment créer une base de données dans MySQL