Mysql, problemas con el archivo de salida en una solución fácil o una mejor manera de hacerlo?

StackOverflow https://stackoverflow.com/questions/2896691

  •  04-10-2019
  •  | 
  •  

Pregunta

en el momento en que estoy escribiendo un guión simple en ksh quién debe tomar algunas cadenas de una base de datos y la lista de ellos en la cáscara. Esta es la forma en que debería funcionar:

  • Consulta de la base de datos para todos los datos básicos
  • Exportar a un archivo de texto
  • Uso awk para mostrar las diferentes columnas

El problema es que hay dos campos de la tabla que estoy preguntando contienen frases. Así awk, obviamente, "cree" que los espacios en blanco entre las diferentes palabras son separadores entre columnas, por lo que me ocurrió con la siguiente solución:

  • SELECT * INTO OUTFILE "salida" CAMPOS terminado por '' FROM tabla
  • Uso de awk a la lista de los resultados (obviamente el separador es ahora '')

Pero aquí tengo otro problema, aunque no tengo

  • concedido el privilegio FILE para el usuario de MySQL Estoy usando
  • dio a mysql 777 en el directorio donde debe escribir

A pesar de ello estoy recibiendo el siguiente error:

'ruta': No se puede crear / escribir en el archivo 'archivo' (Errcode: 13)

Frustrado por esta he empezado navegar por la web para encontrar una respuesta, y me encontré con una "incompleta" uno. En un determinado sitio sugieren que:

  • chown root: root / tmp

  • chmod 1777 / tmp

  • /etc/init.d/mysqld iniciar

Yo pensaba que, si esta solución funciona bien en / tmp entonces no debería haber ningún problema en cualquier otro directorio que elija. Obviamente yo estaba totalmente equivocado :). Si el camino que yo estoy dando a la opción de archivo de salida es 'archivo' / tmp / entonces no hay problema, ningún otro me vuelve la trayectoria del error anterior. Así que lo que encontré una 'solución' al problema? Bueno, sí, pero para utilizar este script una persona tiene que:

  • Tener un usuario de MySQL con el privilegio FILE
  • Haga que los derechos a 'rm' un archivo en / tmp (el archivo de salida de MySQL es temporal)

Y yo no creo que esto es dulce y agradable. Así que lo que te estoy pidiendo? Lo siguiente:

  • ¿Cómo puedo forzar a MySQL para escribir un archivo donde quiera?
  • ¿Usted solución más viable y 'dulce' que la mía me sugieren?

Ah, estoy usando Ubuntu 10.4. Gracias por cualquier ayuda.

¿Fue útil?

Solución

Una solución mejor es para redirigir la salida:

mysql --default-character-set=utf8 -uuser -ppass -s -e "SELECT * FROM mytable;" > results.txt

Cuidado con la opción -s:

  -s, --silent        Be more silent. Print results with a tab as separator,
                      each row on new line.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top