Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment enregistrer un résultat de requête MySQL dans un fichier .CSV

Vous pouvez enregistrer un résultat de requête dans un fichier .CSV en utilisant le SELECT ... INTO OUTFILE déclaration.

Vous spécifiez le nom/l'emplacement du fichier ainsi que d'autres options, telles que les fins de champ, les fins de ligne, etc.

Voici un exemple de base.

SELECT * FROM Customers
INTO OUTFILE '/tmp/customers.csv';

Cela sélectionne toutes les colonnes de Clients table et les place dans un fichier .CSV appelé customers.csv dans le /tmp répertoire.

Options supplémentaires

Vous pouvez spécifier la manière dont les champs et les lignes se terminent à l'aide de la commande FIELDS TERMINATED. et LINES TERMINATED clauses.

Vous pouvez également spécifier les caractères pour encadrer chaque valeur en utilisant le ENCLOSED BY clause.

Et vous pouvez utiliser FIELDS ESCAPED BY clause pour contrôler comment écrire les caractères spéciaux.

Voici à nouveau la requête, cette fois en utilisant certaines de ces clauses supplémentaires :

SELECT * FROM Customers
INTO OUTFILE '/tmp/customers.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

Ajouter des en-têtes

Les exemples précédents généreront un fichier .CSV avec les résultats de la requête, mais pas avec les noms de colonnes. Cela signifie que le fichier .CSV n'aura pas d'en-têtes sur la première ligne.

Pour inclure les noms de colonnes (afin que le fichier .CSV contienne des en-têtes sur la première ligne), vous pouvez les coder en dur dans un autre SELECT instruction, précédée du reste de la requête par un UNION ALL opérateur.

Voici un exemple d'une autre requête (légèrement plus complexe). Dans cet exemple, nous ajoutons des en-têtes de colonne au fichier .CSV :

/* Add column headers */
SELECT 'OrderId','CustomerID','EmployeeID','OrderDate','RequiredDate','ShippedDate','ShipVia','Freight','ShipName','ShipAddress','ShipCity','ShipRegion','ShipPostalCode','ShipCountry','OrderID','ProductId','UnitPrice','Quantity','Discount'

UNION ALL

/* Now the actual query */
SELECT o.OrderId, o.CustomerID, o.EmployeeID, o.OrderDate, o.RequiredDate, o.ShippedDate, o.ShipVia, o.Freight, o.ShipName, o.ShipAddress, o.ShipCity, o.ShipRegion, o.ShipPostalCode, o.ShipCountry, od.OrderID, od.ProductId, od.UnitPrice, od.Quantity, od.Discount 

FROM `Orders` o  LEFT JOIN `Order Details` od ON od.OrderID = o.OrderID 

/* Save the query results to a file */
INTO OUTFILE '/tmp/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

Utilisation de l'interface graphique MySQL Workbench

Vous pouvez également utiliser l'interface graphique de MySQL Workbench pour exporter les résultats d'une requête.