Различия
Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия | ||
wiki:odbs_mysql_12.04_выгрузка_запроса [2012/06/18 10:01] создано |
wiki:odbs_mysql_12.04_выгрузка_запроса [2012/06/26 05:56] (текущий) [Ссылки] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Odbs mysql 12.04 выгрузка запроса ====== | + | ======HOW-TO:odbs mysql 12.04 выгрузка запроса ====== |
+ | Нетривиальный способ выгрузки 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, выбрав в мастере импорта требуемые разделители, например точку с запятой и символ "|". В открытом файле остаётся только удалить несколько "лишних" строк и столбцов, а так же десяток другой пробелов в ячейках ((это лучше сделать формулами или макросом)) и наш запрос готов к дальнейшей обработке. | ||
+ | |||
+ | |||
+ | |||
+ | |||
===== Ссылки ===== | ===== Ссылки ===== | ||
Строка 5: | Строка 78: | ||
* [[FIXME]] | * [[FIXME]] | ||
- | {{tag>odbs mysql 12.04 запросы_mysql}} | + | {{tag>odbs mysql 12.04 запросы_mysql how-to}} |