Je ne trouve pas le fichier créé par outfile dans MySQL

j'utilise la requête suivante pour créer un fichier CSV

SELECT email INTO OUTFILE "mydata.csv"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY "n"
FROM users;

mais je ne trouve pas les mydata.fichier csv n'importe où quand je cherche à travers filezilla.

savez-vous où ce fichier est stocké?

la requête tourne avec succès sans aucune erreur! Toute Aide?

38
demandé sur Marc B 2012-07-14 18:17:36

6 réponses

MySQL peut écrire le fichier dans son propre répertoire de données, comme /var/lib/mysql/<databasename> par exemple. Pour spécifier le chemin, utilisez un chemin complet.

cependant, il doit s'agir d'un répertoire qui est accessible en écriture par le compte utilisateur sous lequel le démon MySQL server tourne. Pour cette raison, je vais souvent utiliser /tmp :

spécifiez le chemin vers lequel vous voulez écrire comme dans:

INTO OUTFILE '/tmp/mydata.csv'

et notez que MySQL écrira le fichier le MySQL serveur , pas sur votre machine client. Par conséquent, les connexions à distance créeront des fichiers de sortie sur le serveur distant. Voir aussi sélectionnez dans OUTFILE local ? pour plus de détails et de solutions de rechange.

Systemd & Linux

Une remarque à propos de l'écriture de /tmp sur un système Linux en cours d'exécution systemd :

quelques années après avoir publié ceci, je me suis trouvé incapable de localiser un fichier écrit à /tmp via

...INTO OUTFILE '/tmp/outfile.csv'

sur un MariaDB 5.5 serveur exécutant Linux Fedora avec systemd . Au lieu d'écrire le fichier directement à /tmp/outfile.csv comme spécifié, ce répertoire et ce fichier ont été créés sous un répertoire systemd dans /tmp :

/tmp/systemd-mariadb.service-XXXXXXX/tmp/outfile.csv

alors que le fichier outfile.csv lui-même et le sous-répertoire tmp/ ont tous deux été créés service directory lui-même a 700 permissions et est la propriété de la racine, nécessitant sudo accès pour récupérer le fichier dans lui.

plutôt que de spécifier le chemin absolu dans MariaDB comme /tmp/outfile.csv et de le spécifier relativement comme outfile.csv , le fichier a été écrit comme prévu dans le répertoire de données de MariaDB pour la base de données actuellement sélectionnée.

50
répondu Michael Berkowski 2017-05-23 12:02:39

je soupçonne que vous cherchez le fichier sur votre machine à clients.

SELECT .. INTO OUTFILE , écrit le fichier sur la machine serveur.

18
répondu Shlomi Noach 2012-07-14 15:07:57

Juste pour Exemple:

j'ai exécuté ci-dessous la requête dans MySQL Workbench & j'ai trouvé mon fichier dans

SELECT * FROM `db`.`table` INTO OUTFILE 'file.csv' FIELDS TERMINATED BY ',';

D:\wamp\bin\mysql\mysql5.6.17\data\db\file.csv

vous pouvez utiliser l'exemple ci-dessous pour définir votre chemin de fichier:

SELECT * FROM `db`.`table` INTO OUTFILE 'C:\file.csv' FIELDS TERMINATED BY ',';
2
répondu Neeraj Singh 2015-02-03 14:09:22

j'ai trouvé mon dans les fichiers OUTFILE, créé avec la commande suivante

select name from users into outfile "name.csv"

à l'emplacement suivant

C:\ProgramData\MySQL\MySQL serveur 5.6\data\name.csv

c'est probablement l'emplacement par défaut, car je n'ai jamais rien changé.

2
répondu StackG 2015-03-02 10:21:49

dans le cas où quelqu'un sur OS X a ce problème, mysql installé avec homebrew a la sortie par défaut situé à /usr/local/var/mysql/database-name/

1
répondu seeker_of_bacon 2016-08-01 16:15:24

Vous trouverez le fichier dans C:\wamp\bin\mysql\mysql5.5.24\data , mais le nom sera UsersNamecarro.txt si vous avez donné suite select * from carro where id_cor<4 INTO OUTFILE 'C:\Users\Name\carro.txt';

alors il suffit d'écrire .....OUTFILE 'C:\carro.txt' pour obtenir le fichier appelé carro.txt dans data dossier

0
répondu Naren 2014-04-17 16:49:00