Convertir les résultats de la requête mysql en CSV (avec copier / coller)
Je travaille le plus souvent en ligne de commande mysql. Un besoin commun est de prendre les résultats d'une requête et de les importer dans un Les numéros de document (similaire à un document Excel).
Quelle est la méthode la plus rapide pour faire cela?
Méthode 1: Select into outfile
Vous pouvez sélectionner dans une outfile directement à partir de MySQL, mais cela prend plusieurs étapes.
- exporter votre requête avec tous les arguments nécessaires pour en faire un format CSV, comme
FIELDS OPTIONALY ENCLOSED BY
etDELIMITED BY
. - sftp sur le serveur et prends le fichier
- supprimer le fichier à partir du serveur
Méthode 2: Copier/coller
J'ai tendance à faire de cette méthode. Pour moi, il semble un peu plus rapide mais c'est surtout parce que je ne me souviens pas de la façon de construire les SELECT INTO OUTFILE
requête à partir de ci-dessus et à le chercher.
- Copier/coller dans un fichier texte local
- Ouvrir dans un éditeur de texte et remplacez le | avec ,
- Enregistrer au format CSV et de les ouvrir dans les Nombres.
source d'informationauteur Gattster
Vous devez vous connecter pour publier un commentaire.
Comment à ce sujet?:
mysql -B -e "$MY_QUERY" > my_data.csv
Le format de sortie est en fait séparé par des tabulations plutôt que séparées par des virgules
mais au moins, Excel et OpenOffice Calc automatiquement s'adapter à cela.
BTW, pour des raisons de commodité et de permettre à des non-interactive de l'exécution de
les commandes mysql, je vous recommande fortement de la configuration d'un secure ~/.mon.cnf fichier
(lisible uniquement par vous) avec des entrées comme ceci:
Références:
http://dev.mysql.com/doc/refman/5.1/en/mysql-command-options.html
--batch, -B
Imprimer les résultats à l'aide de l'onglet comme le séparateur de colonne, chaque rangée sur une nouvelle ligne. Avec cette option, mysql n'utilise pas le fichier d'historique.
Mode Batch résultats dans nontabular format de sortie et l'échappement des caractères spéciaux. Échappement peut être désactivée en utilisant le mode raw; voir la description de la --raw option.
Vous pouvez également utiliser le
mysql
utilitaire de ligne de commande avec la-e
option et de rediriger la sortie vers un fichier. Ce sera la sortie de données en format délimité par des tabulations.Vous pouvez exécuter une
SELECT ... INTO OUTFILE
requête sur votre ordinateur local, et d'enregistrer le fichier localement. Si vous avez la mysql* utilitaire de ligne de commande installé en local, il suffit d'ajouter le-h <ip-address>
drapeau pour se connecter à un hôte spécifique.mysql
pouvez également lire depuis l'entrée standard, de sorte que vous pouvez mettre en place un .fichier sql que vous allez utiliser pour l'importation.Fichier SQL (
outfile.sql
):Alors vous taperez la commande suivante:
Note qu'il pourrait être une bonne idée de créer un nouvel utilisateur qui peut se connecter à partir de votre adresse IP distante, avec FICHIER autorisations et seulement
SELECT
l'accès aux tables, vous devez requête.C'est un peu de l'installation au début, mais en fin de compte, vous pouvez simplement coller le
mysql
de commande dans un fichier de commandes et d'en faire un deux-cliquez sur traiter.*Je crois que vous avez pour télécharger l'intégralité du système MySQL, qui est livré avec le
mysql
CLI.Utiliser votre méthode avec la modification suivante:
Au lieu de l'exécution de la commande sur le serveur, vous pouvez exécuter sur votre machine locale et enregistrer le fichier directement, sans la nécessité de sftp et de le supprimer. Pour cela, vous devez ssh avant le port mysql à un port libre sur votre machine locale.
La première "3306" est le port sur la machine locale. "localhost" se réfère à la remoteservers nom d'hôte. Le deuxième "3306" est le port sur la machine distante, qui doit être transmis. Si le Serveur MySQL fonctionne sur un autre port que vous avez à utiliser ce port à la place. Après la connexion, vous gardez la session ssh ouverte aussi longtemps que vous le souhaitez travailler.
Dans une nouvelle fenêtre de terminal, vous pouvez alors commencer votre session de mysql.
Cette méthode a l'avantage, que vous n'avez pas à exposer votre Serveur MySQL à l'Internet et vous êtes en transfert de toutes les Données dans un tunnel crypté.
Votre option 1 est la meilleure je pense le faire une fois et l'impression les options correctes ou mieux encore, de créer un petit script qui va accepter une requête et d'ajouter automatiquement vos favoris enfermant & séparateur options.
Vous pouvez également sauter les étapes 2 et 3 si vous installez vous-même le client mysql utilitaire pour votre plate-forme de client et de vous connecter directement au serveur mysql à partir de votre poste de travail si possible pour vous.
Excel a une
Text to Columns
fonction en vertu de laData
menu qui vous permet de spécifier une coutume délimiteur. Je devine des Nombres ont des fonctionnalités similaires. Si c'est le cas, la solution est de copier et coller directement dans votre document de Numéros et ensuite convertir ces cellules de texte à des colonnes en précisant|
comme délimiteur.