HOW-TO:odbs mysql 12.04 выгрузка запроса Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:odbs_mysql_12.04_выгрузка_запроса [2012/06/18 11:02]
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, расположенной на серевере,​ зачастую возникает необходимость выгрузки 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}}