1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hyee-dbcli

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

DBCLI: Утилита командной строки для администраторов баз данных (Oracle/MySQL/DB2)

Лицензия MIT ПОМОЩЬ sshot-13

Для более подробного использования обратитесь к файлу PowerPoint в директории docs

Описание

DBCLI — это переносимая утилита командной строки для администраторов баз данных или служб приложений, которая позволяет легко управлять и запускать часто используемые скрипты, аналогично встроенным утилитам командной строки баз данных, но с большей гибкостью.

Основная часть программы написана на языке Lua, а также используется JDBC для доступа к базам данных. Множество файлов являются SQL-скриптами, которые легко поддерживаются.

Программа предназначена для работы с несколькими типами баз данных и включает два типа модулей: один публичный модуль, функции которого видны во всех платформах баз данных, и другой — специфический для конкретной платформы.

Целью не является полное поддержание всех возможностей существующих утилит командной строки, встроенных в конкретные базы данных (Oracle SQL*Plus, DB2 CLP и т.д.), а предоставление дополнительных функций:

  • Визуализация SELECT-запросов и гибкое управление сеткой вывода (см. команду set)
  • Автоматическое создание справочных документов для пользовательских SQL-, shell- и других скриптов
  • Команда alias для уменьшения частых вводов
  • Сильные команды snap и ora как замена стандартным скриптам командной строки, что позволяет администраторам быстро определять и выполнять шаблоны SQL с минимальным вводом
  • Поддержка операций через SSH
  • Предоставление графических диаграмм производительности баз данных, см. команду chart
  • Легкая расширяемость, модификация и установка, так как большинство исходного кода не требует компиляции
  • Легкий переход к встроенной командной строке баз данных

Загрузка

DBCLI не требует компиляции или установки, но зависит от JRE версии OnClickListener 1.8+. Нажмите Download ZIP, извлеките и используйте. Либо вы можете скачать из выпусков.

Ветка With-JRE содержит сжатую сборку JRE, если у вас нет установленного JRE. Из-за региональных и символьных различий эта сборка JRE может работать некорректно.

Windows: Настройка окна терминала

Для ОС Windows рекомендуются следующие настройки в окне командной строки, чтобы избежать переноса слов, влияющего на макет печати:

  • Вкладка Layout: установите ширину буфера и высоту буфера как 500+
  • Вкладка Шрифт: измените размер шрифта на меньшее значение.

Linux: Предварительные требования

Linux должен быть версией 64-bit, и убедитесь, что glibc >= v2.4 установлены (используйте ldd --version для проверки). Вы можете использовать команду <command> | more для горизонтального или вертикального прокрутки выходных данных команд, либо more last для прокрутки последних выходных данных команд.

MacOSX: Предварительные требования

Тестировано на MacOSX 10.12, более ранние версии должны быть совместимыми. Требуется Java 1.8+. Рекомендуется добавить запись <hostname>.local в /etc/hosts для ускорения производительности JVM. Например:

127.0.0.1  localhost mac-pc.local
::1        localhost mac-pc.local

Иногда вы можете столкнуться с исключением ниже при попытке выполнить dbcli.sh: "luajit" cannot be opened because the developer cannot be verified Решение проблемы заключается в отключении ограничений: sudo spctl --master-disable

Настройка среды

Перед запуском dbcli убедитесь, что у вас установлена JRE версии 1.8+ на вашем локальном компьютере. Если вы используете версию ветки "With-JRE", этот шаг можно пропустить.

Создайте файл init.cfg (или init.conf для систем, отличных от Windows) в директории "data" со следующим содержанием (для систем, отличных от Windows, используйте export):

SET JRE_HOME=<JRE HOME>
SET TNS_ADM=<локация tnsnames.ora>

Где TNS_ADM является необязательным, если вам требуется подключение к Oracle через tnsnames.ora, или вы можете также обратиться к init_sample.cfg для дополнительных настроек. Пример:

SET JRE_HOME=d:\soft\java
SET TNS_ADM=d:\Soft\InstanceClient\network\admin

По умолчанию используется кодировка UTF-8. Чтобы использовать другую кодировку, просто измените глобально или в указанном конфигурационном файле переменную окружения DBCLI_ENCODING. Например:

  • SET DBCLI_ENCODING=GBK (для Windows)
  • DBCLI_ENCODING=GBK ./dbcli.sh

Запуск консоли DBCLI

После вышеупомянутой настройки вы можете запустить DBCLI, выполнив dbcli.bat или bin\ConsoleZ\Console.exe.

dbcli.bat также поддерживает аргументы в формате "<command>=<args>", все доступные команды могут быть найдены, набрав help или help -a.

Пример: dbcli.bat "connect=tiger/scott@orcl"

Переключение между платформами баз данных

DBCLI поддерживает несколько платформ баз данных (oracle, mysql, db2 и т.д.), по умолчанию используется Oracle.

Чтобы навсегда изменить предпочитаемую платформу вместо Oracle, выполните set -p platform <platform> после запуска консоли. Например, set -p platform db2Без опции -p изменения будут влиять только на текущее окно консоли.
Введите set platform для просмотра всех доступных вариантов.

Обзор команд


  • Публичные команды: видимы во всех платформах баз данных

  • Инструкция

  • помощь : Отображает информацию о помощи, используйте "помощь <команда>" чтобы показать подробную информацию о других командах, или "помощь помощь" чтобы увидеть больше способов использования команды помощь.
    По умолчанию используется платформа баз данных Oracle, чтобы переключиться на другую платформу, используйте команду "установить [-p] платформа".

  • ansi : Отображает использование консольной цветовой схемы

  • горячие клавиши : Отображает доступные горячие клавиши в консоли

  • Основные

  • установить : Команда установки, отображает или изменяет все настройки окружения консоли или других команд. Измененные настройки могут быть как постоянными, так и временными.

  • алиас : Команда установки, аналогична Unix команде alias,主要用于定义其他命令行的快捷方式,定义会自动存储在文件夹aliases中以供永久使用

  • история/история : Проверка или выполнение исторических команд, исторические команды хранятся только в памяти и доступны в текущем окне

  • r или / : Выполнение предыдущей команды

  • спать : Ожидание определенного количества секунд,主要用于脚本文件中

  • повторять/интервал : Периодическое выполнение других команд

  • хост или ! : Выполнение команд операционной системы

  • перезагрузить : Закрытие всех соединений и перезагрузка окружения консоли, всё будет сброшено.

  • выход : Закрытие всех соединений и закрытие консоли

  • Экран

  • очистить/cls : Очистка экрана

  • спул/spo : Сохранение вывода экрана в файл, имя команды может различаться в зависимости от платформы баз данных

  • колонка/col : Управление форматом сетки полей запроса

  • grep : Аналог Unix команды grep, но поддерживает только передачу данных из других команд

  • больше : Аналог Unix команды more, но поддерживает только передачу данных из других команд

  • tee : Аналог Unix команды tee, но поддерживает только передачу данных из других команд, также позволяет экспортировать вывод экрана в формат csv или html в зависимости от расширения файла, имя команды может различаться в зависимости от платформы баз данных

  • промпт/pro/эхо : Вывод текста, если текст содержит переменные, то они будут заменены значениями этих переменных, имя команды может различаться в зависимости от платформы баз данных

  • База данных

  • соединиться/conn : Подключение к базе данных, Использование: "conn user/password@connection-string"
    Строки подключения могут быть либо заранее определёнными именами в файле data\jdbc_url.cfg, либо следовать формату JDBC thin URL, а для различных платформ баз данных формат URL может отличаться, обычно это формат host:port/database-or-else. Но для баз данных Oracle поддерживаются также TNS-NAME и EZConnect. Для получения более информации используйте команду помощь соединиться

  • войти/logon : Команда установки, просмотр или вход в историю подключений, при успешном подключении информация входа автоматически сохраняется в файл data\password.dat, поэтому пользователю не требуется каждый раз вводить учётные данные

  • отсоединиться/disc : Отсоединение текущего подключения

  • Подтвердить : Подтверждение изменений DML, доступно только когда режим автоподтверждения установлен на вкл

  • Откатить : Откат изменений DML, доступно только когда режим автоподтверждения установлен на вкл

  • Скрипты

  • * : Команда установки, выполнение пользовательского скрипта, который содержит набор команд, поддерживаемых DBCLI, поддерживает возможности переменных, опций и предварительно скомпилированных условий. Движок преобразует входные параметры в переменные V1 - V20, за исключением параметров в формате -<опция>. Это интерфейс для реализации или расширения некоторых других команд, таких как snap/shell/ora/sys/график/sql/и т.д., каждая команда имеет свой каталог для хранения скриптов, и эти названия файлов являются подкомандами.

  • snap : Команда установки, используется в следующих сценариях: [захватить статистику до изменения] => [выполнить другие команды / спать на определённое время] => [захватить статистику после изменения] => [генерировать дельту статистики]

  • Графика

  • график/ch : Команда установки, выполнение пользовательского скрипта для генерации графического чарта из SQL-запроса

  • график/gr : Генерация графического чарта из входных параметров, которые представляют собой текст SQL или CSV-файл

  • Переменная

  • определить/def : Определение переменной с начальным значением, можно использовать в связках SQL или текстовых подстановках в команде или скрипте

  • переменная/var : Определение переменной и её типа данных без присвоения значения, можно использовать как выходной параметр SQL-запроса,主要用于自定义脚本文件

  • принять/acc : Присваивание пользовательского ввода или файла новой переменной

  • сохранить : Сохранение значения конкретной переменной в целевой файл

  • вывести/pri : Вывод целевой переменной

  • Выгрузка

  • sql2file : Генерация результата запроса или курсора в SQL-файл, поддерживает авто-сжатие в зависимости от расширения целевого файла

  • sql2csv : Генерация результата запроса или курсора в CSV-файл и файл управления sqlldr, поддерживает авто-сжатие в зависимости от расширения целевого файла

  • csv2sql : Преобразование CSV-файла в SQL-файл и файл управления sqlldr, поддерживает авто-сжатие в зависимости от расширения целевого файла

  • Командная оболочка

  • ssh : Команда установки для взаимодействия между клиентом и сервером SSH

  • оболочка/shell : Команда установки, выполнение локальных скриптов Python/Perl на удалённом сервере SSH (ещё не завершена), эта команда наследуется от модулей скриптов

  • Внутренние

  • событие : Отображение привязок событий консольного кода

  • lua-jit : Переключение в консоль LuaJIT

  • lua : Вход в консоль Lua, доступ к объектам среды

  • поиск/search : Поиск исходного кода

  • -p : Тестирование команды и проверка её входных параметров

  • помощь -a или установить -a : просмотр места определения команд/настроек

  • База данных Oracle

  • SQL

  • * : Поддерживает почти все SQL-запросы базы данных Oracle

  • Отчёт

  • awrdump : Генерация отчёта AWR в соответствии с указанным временным диапазоном или snap_id

  • awrdiff : Генерация сравнительного отчёта AWR в соответствии с указанным временным диапазоном или snap_id

  • addmdump : Генерация отчёта ADDM в соответствии с указанным временным диапазоном или snap_id

  • addmdiff : Генерация сравнительного отчёта ADDM в соответствии с указанным временным диапазоном или snap_id

  • ashdump : Генерация отчёта ASH в соответствии с указанным временным диапазоном или snap_id

  • Извлечение

  • loadtrace/dumptrace : Скачивание трассировки файлов self/alert/других с сервера базы данных, требуются права доступа create/drop any directory, если невозможно получить доступ к пути OS цели с помощью существующих директорий Oracle

  • sqlprof : Генерация скрипта профиля SQL из sqlarea/awr/spm/профиля/plan_table/и т.д.

  • unwrap : Извлечение PL/SQL кода или представления из базы данных в локальный файл, если код зашифрован, он автоматически дешифруется

  • Скрипты

  • oracle : Команда установки, реализующая движок скриптов, для выполнения предопределённых или пользовательских скриптов, предназначенных для администраторов баз данных или разработчиков, эта команда содержит множество полезных скриптов

  • sys : Команда установки, наследованная от oracle, кроме того, она предназначена только для использования SYSDBA

  • show : Команда установки, наследованная от oracle, кроме того, она не принимает входные параметры

  • exa : Команда установки, наследованная от oracle, используется для запроса конфигураций и статистики ячеек Exadata

  • SQL*Plus

  • sqlplus : Запуск консоли sqlplus с тем же входом в режиме native или embedded, а также другие входные параметры

  • @ или sp : Выполнение скрипта sqlplus в режиме embedded с тем же входом

  • Настройки

  • установить instance : Автоматическое ограничение экземпляра в соответствии с любыми SQL-запросами, обращающимиси к представлениям gv$/x$/dba_hist

  • установить контейнер : Автоматическое ограничение ID контейнера в соответствии с любыми SQL-запросами, обращающимиси к представлениям, содержащим поле con_id

  • установить начало времени : Автоматическое ограничение начального времени по умолчанию для предопределённых SQL-запросов, указывающих диапазон времени

  • установить конец времени : Автоматическое ограничение конечного времени по умолчанию для предопределённых SQL-запросов, указывающих диапазон времени

  • Другое

  • описание/desc : Описание объекта Oracle, предоставляет больше возможностей, чем sqlplus

  • xplan : Отображение плана выполнения для входящего текста SQL/ID, а также скачивание файла трассировки 10053, если указано определение -10053* База данных MySQL (ещё не завершена)

    • SQL
      • * : Поддерживает почти все SQL-запросы базы данных MySQL
    • Консоль
      • mysql : Переключение на mysql.exe с тем же входом и другими входными параметрами
      • mysqluc : Переключение на mysqluc.exe с тем же входом и другими входными параметрами
      • источник или \. или ms : Переключение на mysql.exe с тем же входом для выполнения целевого скрипта
    • Скрипты
      • sql : Наследуется от движка скриптов, для выполнения скрипта, содержащего несколько команд
      • ps : Аналогично sql, но основан на performance_schema
      • ti : Аналогично sql, но предназначен только для TiDB
      • список/list : Аналогично sql, но не принимает параметров
    • Другое
      • ? или \? : Частично отличается от оригинального \?, предоставляет больше возможностей
      • Н/Д : Некоторые команды аналогичны оригинальному mysql консоли
      • инфо/info : Описание объекта более детально
  • База данных PostgreSQL (ещё не завершена)

    • SQL
      • * : Поддерживает почти все SQL-запросы базы данных PostgreSQL
    • Консоль
      • psql : Переключение на psql.exe с тем же входом и другими входными параметрами
      • файл или -f : Переключение на psql.exe с тем же входом и выполнение целевого скрипта
    • Скрипты
      • sql : Наследуется от движка скриптов, для выполнения скрипта, содержащего несколько команд
    • Другое
      • Н/Д : Некоторые команды аналогичны оригинальному psql консоли

Типы команд

Правила команд аналогичны SQL*Plus:

  • Команды DDL, связанные с созданием исходного кода (создать триггер/пакет/функцию/процедуру/тип), являются многострочными командами и должны завершаться символом / на отдельной строке. создать таблицу/индекс/и т.д. не относятся к этому типу, поскольку они связаны с структурой.
  • Другие команды DML, DDL, DCL также являются многострочными командами и завершаются либо символом ;, либо / на новой строке.
  • Команда Установить MARKERS_КОНЕЦ используется для настройки этих двух символов.
  • Кроме вышеупомянутых команд, большинство остальных команд являются одиночными строковыми командами и выполняются после нажатия клавиши Enter. Чтобы узнать тип каждой команды, используйте помощь -a и обратитесь к полю Многострочные.

Перенос строки

Для строк вывода шире ширины буфера (в системах POSIX — ширины экрана), лишняя часть будет обрезана. Чтобы просмотреть полную информацию:

  • используйте <команда> | less для перехода в режим просмотра less Linux, и нажмите стрелки для прокрутки экрана
  • используйте less последний для просмотра последнего вывода в режиме less
  • запустите команду вывод для запуска стандартного редактора для просмотра исторического вывода. Если стандартный редактор — vi, выполните :set nowrap и используйте горячие клавиши e/b/zL/zH для горизонтальной прокрутки экрана. Чтобы изменить стандартный редактор, используйте установить [-p] редактор <имя исполняемого файла>. Например, установить редактор code

Решения с использованием цветов

dbcli определяет некоторые цвета, используемые в разных ситуациях, эти цвета можно найти с помощью команды установить цвет.
Вы можете изменить цвета, выполнив команду установить [-p] <имя цвета> <новый код>, где код можно найти с помощью команды ansi, а -p означает постоянное применение.
Например, установить promptcolor BLU;BWHT;UDL изменяет цвет промпта на синий фон + белый текст + подчеркнутый, а установить promptcolor default меняет его на значение по умолчанию.
Возможно отключение использования цветов, что делается путём выполнения команды установить ansicolor off.Релизы

На странице releases находится 5 архивов ZIP, используемых в различных сценариях. Все эти релизы не включают директорию src:

  • dbcli_all.zip: содержит всё
  • dbcli_win.zip: исключает директорию jre_linux и включает JRE 1.8 для Windows
  • dbcli_linux.zip: исключает директорию jre и включает JRE 1.8 для Linux
  • dbcli_nojre.zip: исключает директории jre/jre_linux
  • dbcli_oracle_lite.zip: исключает директории jre/jre_linux/bin/docs. Вы можете удалить больше поддиректорий в lib в зависимости от вашей ОС.

Ссылки

Утилита зависит от некоторых двоичных файлов открытых проектов, права на которые принадлежат авторам этих проектов. Двоичные файлы были включены в этот проект. Ниже представлен список:

JLine3      : (BSD)    https://github.com/jline/jline3
JSch        : (BSD)    http://www.jcraft.com/jsch/
ConsoleZ    : (GNU)    https://github.com/cbucher/console
luajit v2.1 : (MIT)    https://github.com/LuaJIT/LuaJIT
jnlua       : (MIT)    https://github.com/hyee/JNLuaJIT(переработка с jnlua.googlecode.com)
OpenCSV     : (MIT)    https://github.com/hyee/OpenCSV(переработка с opencsv.sourceforge.net)
MessagePack : (MIT)    https://github.com/fperrad/lua-MessagePack (чистый Lua)
dygraphs    : (MIT)    https://github.com/danvk/dygraphs
JsonForLua  : (MIT)    https://github.com/craigmj/json4lua 
PSCP        : (MIT)    http://www.putty.org/ 
LPeg        : (MIT)    http://www.inf.puc-rio.br/~roberto/lpeg
xml2lua     : (MIT)    https://github.com/manoelcampos/xml2lua
JNA         : (LGPL)   https://github.com/java-native-access/jna
NuProcess   : (Apache) https://github.com/brettwooldridge/NuProcess
Luv(libuv)  : (Apache) https://github.com/luvit/luv
ConEmu      : (BSD)    https://github.com/Maximus5/ConEmu
juniversalchardet :    https://github.com/albfernandez/juniversalchardet   

Кроме того, некоторые скрипты SQL взяты из интернета.

Пользовательские команды

Создание новых простых команд

Вы можете использовать команду alias для определения сокращённой формы простой команды, например:
alias sf select * from (select * from $*) where rownum<=50;

В этом случае вы сможете выполнить sf dba_objects where object_id<1000 для упрощения ввода.

Команда alias поддерживает специальные символы $1-$9 и $*, где $n соответствует n-му параметру, а $* означает конкатенацию $n+1-$9 через пробел. Введите alias для просмотра более подробной информации.

Создание новых подкоманд

Аналогично скриптам SQL*Plus, подкоманда — это комбинация одного или нескольких существующих команд, поддерживающих пользовательские входные параметры. Например, для определения подкоманды xxx для команды ora, создайте файл oracle/ora/xxx.sql и заполните его следующим содержанием:
select * from (select * from &V1) where rownum<=50;

После этого выполните ora -r, чтобы применить изменения, затем вы сможете выполнить ora xxx dba_objects для запроса представления.

Утилита создаёт несколько заранее определённых команд. Если вы хотите изменить эти команды без опасений, что новые версии могут перезаписать их, просто создайте поддиректорию под директорией ora и поместите обновлённый файл в неё. Для скриптов с одинаковым названием тот, который находится в поддиректории, будет иметь приоритет. Также можно использовать ora -l <path>, чтобы связать с другим рабочим каталогом.Команды ora/show/sys/snap/chart/sql/shell/etc также следуют аналогичным правилам:

  • Параметры: принимают :V1-:V20 или &V1-&V20 как входные параметры, где :Vn означает привязку параметров, а &Vn — замену переменных.
  • Комментарий помощи: /*[[...]]*/ является необязательным и используется для помощи или информации о использовании.
  • Параметры: --[[...]]-- внутри комментария помощи также являются необязательными и обычно используются для указания опций команды (например, ora actives -m) и проверки доступности, обратитесь к другим подкомандам для примеров.

Создание новых корневых команд

В отличие от подкоманд, корневая команда должна быть скриптом Lua. Чтобы подключить пользовательский скрипт Lua к утилите, просто добавьте путь к нему в data/plugin.cfg, вы можете обратиться к data/plugin_sample.cfg за примером.

Ниже представлены общие интерфейсы, которые могут быть использованы в скрипте:

  • Определение новой команды: env.set_command(...)
  • Определение нового параметра: env.set_init_cfg(...)
  • Добавление триггера к событию: env.snoop('<event_name>', <parameters>)
  • Получение текущей базы данных: env.get_db()

Вы также можете:

  • Выполнить help -a или set -a или event для просмотра использования этих интерфейсов в других скриптах
  • Выполнить help -e env[.module] 2 для просмотра доступных интерфейсов, например: help -e env.oracle 2

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Утилита командной строки для баз данных (Oracle/MySQL/PostgreSQL), поддерживает Windows/Linux (x64)/MacOS, опубликована на github и синхронизирована с osc. После загрузки можно использовать без установки. Чтобы узнать больше, откройте docs\help_zh.chm. Если возникнут вопросы, обращайтесь в любое время, приветствуется вклад кода. Развернуть Свернуть
MIT
Отмена

Обновления (2)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/hyee-dbcli.git
git@api.gitlife.ru:oschina-mirror/hyee-dbcli.git
oschina-mirror
hyee-dbcli
hyee-dbcli
master