на данный момент я пишу простой скрипт на ksh, который должен взять некоторые строки из БД и вывести их на оболочку. Вот как это должно работать:
- Запрос к базе данных для всех данных
- Экспорт их в текстовый файл
- Использование awk для отображения разных столбцов
Проблема в том, что два поля таблицы, к которой я обращаюсь, содержат предложения. Очевидно, awk «думает», что пробелы между разными словами являются разделителями между столбцами, поэтому я нашел следующее решение:
- SELECT * INTO OUTFILE "output" ПОЛЯ, ПРЕКРАЩАЕМЫЕ таблицей ',' FROM
- Использование awk для вывода результатов (очевидно, теперь разделителем является ',')
Но здесь у меня есть другая проблема, хотя у меня
- Предоставил привилегию FILE пользователю mysql, которым я пользуюсь
- дал mysql 777 по каталогу, куда надо написать
Несмотря на это, я получаю следующую ошибку:
'путь': невозможно создать / записать в файл 'файл' (код ошибки: 13)
Разочарованный этим, я начал просматривать веб-страницы, чтобы найти ответ, и нашел "неполный". На определенном сайте они предлагают:
chown root: root / tmp
chmod 1777 / тпм
/ etc / init.d / mysqld start
Я подумал, что если это решение отлично работает на / tmp, то не должно быть никаких проблем с любым другим каталогом, который я выберу. Очевидно, я был совершенно неправ :). Если путь, который я указываю для опции outfile, - это / tmp / 'file', то проблем нет, любой другой путь возвращает мне предыдущую ошибку. Так я нашел «решение» проблемы? Ну, да, но чтобы использовать этот скрипт, кто-то должен:
- У пользователя mysql с привилегией FILE
- Иметь права на 'rm' файл в / tmp (выходной файл mysql является временным)
И я не думаю, что это мило и мило. Так о чем я тебя спрашиваю? Следующее:
- Как я могу заставить mysql написать файл, куда я хочу?
- Есть ли у вас более жизнеспособное и «сладкое» решение, чем мое, чтобы предложить мне?
Ах, я использую Ubuntu 10.4.
Спасибо за любую помощь.