MySQL, проблемы с навалом, простое решение или лучший способ сделать это?

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

  •  04-10-2019
  •  | 
  •  

Вопрос

На данный момент я пишу простой скрипт в КШ, который должен взять некоторые строки из БД и перечисляйте их на оболочку. Вот как это должно работать:

  • Запрос БД для всех данных
  • Экспортируйте их в текстовый файл
  • С использованием awk. Чтобы показать различные столбцы

Проблема в том, что два поля таблицы, которые я запрошаю, содержащий предложения. Так что awk, очевидно, «думает», что белые промежутки между разными словами являются сепараторами между колоннами, поэтому я придумал следующее решение:

  • Выберите * в Outfile «Выходные» поля, заканчиваемые «, 'от таблицы
  • Использование AWK, чтобы перечислить результаты (очевидно, сепаратор сейчас ',')

Но здесь у меня еще одна проблема, хотя я

  • Предоставил файл привилегию для пользователя MySQL, который я использую
  • Дал MySQL 777 в каталог, где он должен написать

Даже так я получаю следующую ошибку:

«Путь»: не может создавать / запись в файл «Файл» (errcode: 13)

Разочарованный этим я начал заниматься серфингом в Интернете, чтобы найти ответ, и я нашел «неполный» один. На определенном сайте они предлагают:

  • Chowne root: root / tmp

  • CHMOD 1777 / TMP

  • /etc/init.d/mysqld start.

Я думал, что, если это решение работает нормально на / TMP, то не должно быть никаких проблем в любом другом каталоге, которое я выбрал. Очевидно, я был совершенно неправ :). Если путь, который я даю опцию Outfile, это / tmp / 'file', то нет проблем, любой другой путь возвращает мне предыдущую ошибку. Так я нашел «решение» к проблеме? Ну да, но использовать этот скрипт А кому-то должен:

  • Есть пользователь MySQL с привилегией файла
  • Имейте права на файл «RM» в / TMP (выходной файл MySQL является временным)

И я не думаю, что это мило и мило. Так что я вас спрашиваю? Последующий:

  • Как я могу заставить MySQL написать файл, куда бы я ни хотел?
  • Вы более жизнеспособны и «сладкое» решение, чем мое, чтобы предложить мне?

Ах, я использую Ubuntu 10.4. Спасибо за любую помощь.

Это было полезно?

Решение

Лучшее решение для перенаправления выхода:

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

Разум -s вариант:

  -s, --silent        Be more silent. Print results with a tab as separator,
                      each row on new line.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top