Cichlidae/WF-SyncTools
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
SQL Shell Set v1.2.RC6
-----------------------
Набор консольных win-приложений, позволяющий исполнять
SQL-запросы к различным базам данных.
Для доступа к данным использует Microsoft ADO и JDBC.
I. Командная строка. Доступ к данным через ADO.
Перечень доступных команд в command line можно узнать, набрав:
> ado-sql-shell.exe -?
или
> ado-sql-shell.exe -help
II. Командная строка. Доступ к данным через JDBC.
Перечень доступных команд в command line можно узнать, набрав:
> jdbc-sql-shell.exe -?
или
> jdbc-sql-shell.exe -help
III. Осуществление запросов к различным БД.
А) Visual FoxPro.
> ado-sql-shell.exe -v fvp 'd:\db\base.dbc'
> jdbc-sql-shell.exe -v fvp 'd:\db\base.dbc'
* Microsoft ODBC драйвер не умеет выполнять запросы
INSERT INTO...SELECT, поэтому, если это ваш случай,
используйте только ADO-коннект.
* У OLE(ADO)v9 драйвера также есть ряд особенностей,
которые перечислены в файле vfpole_bugs.txt
Б) XBase.
> jdbc-sql-shell.exe -v xbase 'd:\db\'
* Кроме файлов *.dbf, драйвер может работать и
с другими хранилищами, например, zip. Подробнее
в документации к HXTT DBF driver.
В) Excel.
> ado-sql-shell.exe -v excel 'd:\file.xlsx'
* CRUD-запросы пока не тестировались.
* Может работать как с *.xlsx, так и со старыми *.xls
Г) SQLite.
> jdbc-sql-shell.exe -v sqlite 'd:\db\baza.db'
* пока не тестировалось.
Д) MySQL.
> jdbc-sql-shell.exe -v mysql 'localhost:3306/dbname' -u 'login' -p 'password'
* пока не тестировалось.
Е) SQL Server.
> ado-sql-shell.exe -v mssql -wid 'YOUR_ID' 'Initial Catalog'
* пока не тестировалось.
IV. Ввод SQL-запросов:
На входе STD.IN принимает полную строку SQL-запроса.
Поэтому, в запросе не должно быть переводов строки.
> select top 5 * from sclad_mlabel order by name;
> select t1.* from sclad_t1 as t1 inner join sclad_t2 as t2 on t1.key=t2.key where t1.key <> '';
> select t.* from d:/test.dbc!sclad_t as t;
> select `ALL$`.KlassWrk from `ALL$`;
Формат запроса зависит от БД, к которой подключение.
Последовательная пакетная обработка запросов - примечание A.
V. Вывод результатов запросов:
Стандартный вывод результатов запросов приложение осуществляет в консоль STD.OUT.
> ado-sql-shell.exe -v vfp 'd:\test.dbc' > result.txt
Однако, есть возможность вывести результирующие таблицы,
полученные через SELECT-запросы, в Excel-файл (*.xlsx).
> ado-sql-shell.exe -v -xlsx 'd:\result.xlsx' vfp 'd:\test.dbc'
Если excel-файл уже существует, результат запроса добавляется
в него как новый лист по порядку. Но если необходимо
пересоздать файл заново, нужно использовать опцию "-rewrite".
> ado-sql-shell.exe -v -rewrite -xlsx 'd:\result.xlsx' vfp 'd:\test.dbc'
Результат каждого SELECT-запроса помещается в отдельный лист,
наименование которого можно задать (по желанию)
через предваряющий SQL-комментарий в теле запроса. Результирующие
таблицы форматируются для удобства последующего анализа
(заголовки таблиц, раскраска ячеек, фильтры по каждому столбцу).
Задание заголовка результирующего excel-листа:
> --TNVED-- select grup, nnum, name, tnved from sclad_mlabel;
Комментарий всегда пишется перед самим запросом!
В теле запроса игнорируется или выдает ошибку в зависимости от БД.
Если какой-то результат запроса необходимо исключить из вывода
вообще, нужно воспользоваться таким предваряющим SQL-комментарием:
> --!-- select count(*) from table;
VI. Работа с кириллицей:
Кириллические символы при работе с консолью всегда обрабатываются
приложением в кодировке UTF-8. Поэтому, необходимо, чтобы
консоль была настроена на UTF-8.
Внутреннее взаимодействие с драйвером БД и Excel осуществляется
в кодировке, установленной для этих программ.
* JDBC: для соединений с VFP и xBase кодировка не определяется
автоматически, поэтому она зашита в программу как "cp1251".
VII. Технические требования:
1. JRE 6+.
* для коннектов к VFP только 32-bit.
Дальнейшее опционально, в засисимости от типа используемых
коннектов и способа вывода результатов.
2. Jacob*.dll 32-bit (ADO-bridge) в текущей директории приложения.
3. VFPOLEDB.dll OLE драйвер (v9), установленный в Windows.
4. Установленные в системе Excel(2010)-драйвера.
5. excel-poi-plugin.jar в текущей директории приложения.
6. HXTT DBF driver версии 4 и выше в текущей директории приложения.
7. MySQL jdbc driver версии, корреспондирующей с версия БД
в текущей директории приложения.
8. SQLite driver в текущей директории приложения.
Примечание А.
Чтобы осуществить пакетную обработку запросов, нужно воспользоваться скриптом
flatten-query.sh, предварительно записав все SQL-запросы в один файл и
отделив их друг от друга не менее чем двумя последовательными переводами строк.
Тогда вызов программы будет таким:
> cat batch.sql | flatten-query.sh | ado-sql-shell.exe -v vfp 'd:\test.dbc'
Примечание Б.
Дополнительные утилиты:
1. guid-generator.exe
Генерирует различные виды GUID и UUID, в том числе и
кириллический guid22, использующийся в системе БЭСТ.
2. md5-checksum.exe
Проверка контрольной суммы файлов.
3. mail-notifier.exe
Уведомление по e-mail через службу GMAIL.