2012-07-13 8 views
5

Estoy tratando de escribir algunos datos de una declaración de selección de MySQL a un archivo en una Mac con Snow Leopard.¿Dónde almacena MySQL en OSX los archivos de salida de forma predeterminada?

select date_base, fractile_v2, gics, count(gvkey_iid) 
from master 
where fractile_v2 <= 15 and 
     fractile_v2 != 0 
group by date_base, gics, fractile_v2 
order by date_base, fractile_v2 
limit 100000 
INTO OUTFILE '/User/my-name/Desktop/gics_v2.csv' 
FIELDS TERMINATED BY ','; 

Desafortunadamente esto genera el siguiente error:

Error Code: 1. Can't create/write to file '/Users/andrew/Desktop/gics_v2.csv' (Errcode: 13)

la que estoy suponiendo que es un problema de permisos.

Cuando reemplazo la ruta completa del archivo '/User/my-name/Desktop/gics_v2.csv' con simplemente gics_v2.csv parece que las sentencias se ejecutan. Sin embargo, no tengo idea de dónde se guarda el archivo y no puedo encontrarlo.

¿Alguien sabe? ¿Y alguien puede sugerir también cómo puedo resolver el error de escritura inicial? Estoy ejecutando MySQL como usuario root.

+1

No estoy seguro si [esto] (http://dev.mysql.com/doc/refman/5.0/en/cannot-create.html) ayuda. Por lo que vale, 'find/-name" gics_v2.csv "' como root debería ubicar el archivo en tu computadora – benjammin

+1

@BenM gracias Ben, tuve que usar 'sudo' para encontrarlo pero está bajo/usr/local/mysql -5.5.17-osx10.6-x86_64/data /. Lo ayudas mucho, lo aprecio. –

Respuesta

4

Este es un problema de permisos porque está intentando que el usuario de mysql escriba en su directorio de inicio privado. Intente escribir en una carpeta que cree en/usr/local/en su lugar y solo para estar seguro, puede hacer permisos de lectura/escritura globales ya que es su Mac.

Abrir terminal en su Mac:

cd /usr/local

mkdir DbOutput

sudo chmod -R 777 DbOutput

Luego de vuelta a su código, pero el cambio de ruta:

select date_base, fractile_v2, gics, count(gvkey_iid)

from master

where fractile_v2 <= 15 and

fractile_v2 != 0

group by date_base, gics, fractile_v2

order by date_base, fractile_v2

limit 100000

INTO OUTFILE '/usr/local/DbOutput/gics_v2.csv'

FIELDS TERMINATED BY ',';

+0

Muchas gracias Mike. Voy a tener que jugar un poco con los permisos un poco, creo. Ha pasado un tiempo desde que hice esto. Aprecio la ayuda. –

+0

No hay problema. He estado usando tanto este sitio últimamente que sentí la necesidad de devolver algo. Esta es mi primera respuesta y voto así que gracias a ustedes también. ;-) –

+0

No estoy de acuerdo con esto, realmente no responde la pregunta, y aconsejar a alguien que haga directorios 777 es una especie de truco. Mejor usar permisos más apropiados. –

2

Por defecto SELECT ... INTO OUTFILE pone los archivos en el directorio en el que los datos archivos en vivo. Tan algo como /path/to/datadir/databasename/gics_v2.csv

Escribe archivos como el servidor, no el cliente. Así que no es el uso de permisos de su usuario, sino que el usuario que ejecuta el proceso mysqld (que por lo general se _mysql en OSX.)

Usted simplemente tiene que darle una ruta en la que se permite que el usuario pueda escribir.

+0

gracias por su ayuda. Encontré dónde estaba escribiendo y creé un nuevo directorio específico y le di permiso al usuario del servidor para escribir. Aprecio tu ayuda. –

0

estoy corriendo Mac OS X Server 10.7.4 y para mí, el directorio OUTFILE es /var/mysql/databasename/

1

Sé que la cuestión no está actualizado, pero lo digo, en mi Mac OS X 10.10, el directorio OUTPUT es algo como esto: /usr/local/mysql-5.7.10-osx10.9-x86_64/data/databasename/***.csv.

Cuestiones relacionadas