Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
wiki:odbs_mysql_12.04_выгрузка_запроса [2012/06/18 11:15] |
wiki:odbs_mysql_12.04_выгрузка_запроса [2012/06/26 05:56] (текущий) [Ссылки] |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ======HOW-TO:odbs mysql 12.04 выгрузка запроса ====== | ======HOW-TO:odbs mysql 12.04 выгрузка запроса ====== | ||
| Нетривиальный способ выгрузки mysql запроса в внешний файл с помощью утилит isql и script. | Нетривиальный способ выгрузки mysql запроса в внешний файл с помощью утилит isql и script. | ||
| + | |||
| + | ===== Зачем оно может быть нужно ===== | ||
| + | При работе с базой данный mysql, расположенной на серевере, зачастую возникает необходимость выгрузки mysql запроса во внешний файл. Эту задачу, также, просто решить с помощью phpmyadmin, если не одно "но": кодировка. Если база создавалась без учёта правильной кодировки то кириллические символы при выводе результата запроса могут выглядеть примерно так: ЗÐО МÐÐ ÐМ+. В ubuntu 10.04, проблема с кодировкой решалась, настройкой odbc и подключением к базе посредством ООо-base от sun. Но на 12.04 с глубоко "зашитым" LibreOffice подключение через odbc не привела к желаемым результатам, вывод запроса оказался нечитаемым. Как временное решение проблемы можно предложить нижеследующий способ. | ||
| + | |||
| + | ===== Настройка odbc в ubuntu-12.04 ===== | ||
| + | В начале необходимо установить в систему пакеты odbc (open data base connect) драйвера: | ||
| + | |||
| + | <code> sudo apt-get install unixodbc libmyodbc </code> | ||
| + | имена файлов настроек odbc можно увидеть введя в терминале: | ||
| + | <code> odbcinst -j </code> | ||
| + | вывод в 12.04 будет примерно таким: | ||
| + | |||
| + | <code>unixODBC 2.2.14 | ||
| + | DRIVERS............: /etc/odbcinst.ini | ||
| + | SYSTEM DATA SOURCES: /etc/odbc.ini | ||
| + | FILE DATA SOURCES..: /etc/ODBCDataSources | ||
| + | USER DATA SOURCES..: /home/user/.odbc.ini | ||
| + | SQLULEN Size.......: 4 | ||
| + | SQLLEN Size........: 4 | ||
| + | SQLSETPOSIROW Size.: 2 | ||
| + | </code> | ||
| + | |||
| + | в файле /etc/odbcinst.ini необходимо указать файлы драйвера в системе: | ||
| + | <code>sudo gedit /etc/odbcinst.ini </code> | ||
| + | в редакторе прописать: | ||
| + | <code>[MySQL] | ||
| + | Description = ODBC for MySQL | ||
| + | Driver = /usr/lib/i386-linux-gnu/odbc/libmyodbc.so | ||
| + | Setup = sud/usr/lib/i386-linux-gnu/odbc/libodbcmyS.so | ||
| + | FileUsage = 1 </code> | ||
| + | |||
| + | Сервер и базу данных для подключения необходимо задавать либо в целом для системы в файле /etc/odbc.ini либо для текущего пользователя в файле /home/user/.odbc.ini (или ~/.odbc.ini, для правки этого файла необходимо ввести в терминале "gedit ~/.odbc.ini"). Пользовательский файл ~/.odbc.ini может выглядеть следующим образом: | ||
| + | <code>[qdb] | ||
| + | ReadOnly=yes | ||
| + | Driver= MySQL | ||
| + | Server=127.0.0.1 | ||
| + | Port=7777 | ||
| + | USER=qdb_u | ||
| + | PASSWORD=qdb_password | ||
| + | Database=q_db | ||
| + | </code> | ||
| + | Тут необходимо заметить, что к серверу с БД, я подключаюсь с локальной машиной посредством ssh, введя в терминале | ||
| + | <code> ssh -L7777:localhost:3306 s_user@192.168.32.210 </code> где s_user - имя пользователя на сервере, а 192.168.32.210 - IP сервера; | ||
| + | |||
| + | Проверить настройки подключения в БД можно набрав в терминале <code>isql qdb</code> | ||
| + | если всё указано правильно, должно вывестить следующее: | ||
| + | <code>+---------------------------------------+ | ||
| + | | Connected! | | ||
| + | | | | ||
| + | | sql-statement | | ||
| + | | help [tablename] | | ||
| + | | quit | | ||
| + | | | | ||
| + | +---------------------------------------+ | ||
| + | SQL> | ||
| + | </code> | ||
| + | При помощи утилиты isql, в том числе можно вводить запросы конструкции SELECT. | ||
| + | |||
| + | ===== Вывод запроса SELECT во внешний файл на локальной машине ===== | ||
| + | И так, исходные данные: имеется настроенное ssh подключение между локальной машиной и сервером и настроенное odbc подключение с базой данных. | ||
| + | Подключаемся к серверу | ||
| + | <code> ssh -L7777:localhost:3306 s_user@192.168.32.210 </code> | ||
| + | Открываем новое окно терминала Shift+Сtrl+t, и вводим примерно следующее: | ||
| + | <code>script -t /home/user/имя_файла</code> | ||
| + | тут: утилита script позволяет записывать всё, что происходит в терминале, а /home/user/имя_файла - собственно файл куда будет выводится запрос. Далее подключаемся к базе: | ||
| + | <code>isql qdb</code> | ||
| + | и вставляем в терминал требуемый запрос((для удобства запрос можно предварительно записать в каком-нибудь редакторе, затем скопировать и вставить посредством меню мыши или комбинацией клавиш Shift+Ins)). После исполнения запроса нажимаем Ctrl+C Ctrl+D, для выхода из script. Созданный файл можно открыть в Calc, выбрав в мастере импорта требуемые разделители, например точку с запятой и символ "|". В открытом файле остаётся только удалить несколько "лишних" строк и столбцов, а так же десяток другой пробелов в ячейках ((это лучше сделать формулами или макросом)) и наш запрос готов к дальнейшей обработке. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| ===== Ссылки ===== | ===== Ссылки ===== | ||
| Строка 6: | Строка 78: | ||
| * [[FIXME]] | * [[FIXME]] | ||
| - | {{tag>odbs mysql 12.04 запросы_mysql}} | + | {{tag>odbs mysql 12.04 запросы_mysql how-to}} |