2010-05-10 4 views
5

J'ai un script shell sur le serveur a. Le script crache un fichier csv dans un répertoire local. Le problème est le serveur de base de données est sur le serveur b. Comment puis-je utiliser sélectionnez * dans le fichier de sortie dans une configuration comme celle-ci?MySQL SELECT INTO OUTFILE vers un autre serveur?

Je reçois

Can't create/write to file '/home/username/test.csv/' (Errcode: 2) 

données charge Résolu infile en utilisant mot-clé 'LOCAL'. Y a-t-il quelque chose comme ça pour la sortie?

Répondre

11

select into outfile peut uniquement créer le fichier sur le serveur, pas le client.

Voici ce que le manuel recommande à votre situation:

Si vous voulez créer le fichier résultant sur un hôte client autre que l'hôte du serveur, vous ne pouvez pas utiliser SELECT ... INTO OUTFILE. Dans ce cas, vous devez utiliser une commande telle que mysql -e "SELECT ..."> nom_fichier à pour générer le fichier sur l'hôte client.

http://dev.mysql.com/doc/refman/5.1/en/select.html

+0

Toute chance qu'ils implantera le mot-clé LOCAL dans outfile comme ils le font avec infile dans la prochaine version? Ce problème simple cause beaucoup de travail supplémentaire. Merci! – ThinkCode

+0

J'en doute. Avez-vous essayé l'approche recommandée en utilisant 'mysql -e' et en redirigeant la sortie vers un fichier local? –

+1

Puisqu'il le vidait en tant que texte et qu'il n'y avait aucun moyen de le jeter en fichier CSV, j'ai dû ignorer complètement cette approche. MySQL rend très difficile l'exécution d'une tâche si simple :(Merci encore! – ThinkCode

0

Utilisez la commande suivante:

mysql -uusername -ppassword -h DBIP DBNAME -e \ 
"SELECT * FROM tablename" > /destinationpath/outputfilename.csv 
Questions connexes