MySQL, проблемы с навалом, простое решение или лучший способ сделать это?
-
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.