Skip to content

Instantly share code, notes, and snippets.

@1234ru
Last active September 13, 2023 23:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 1234ru/4d66f86580e52f1932bd82efb9178d93 to your computer and use it in GitHub Desktop.
Save 1234ru/4d66f86580e52f1932bd82efb9178d93 to your computer and use it in GitHub Desktop.
Заметки о MySQL Shell

Улучшенная по сравнению с mysql оболочка командной строки - mysqlsh.

https://dev.mysql.com/doc/mysql-shell/8.0/en/

В стандартный пакет сервера MySQL не входит, нужно загружать отдельно. Можно просто распаковать ZIP-архив и, при желании, прописать в PATH.

Соединение с сервером

mysqlsh(.lnk) --host . --user username --sql

Попросит парль.

Подхват файла с конфигурацией для соединения:

mysqlsh.lnk --defaults-file=D:\portable\mysql-8.0.22-winx64\my.ini --host .

Не воспринимает опцию pipe из [client] - отказывается работать. Поэтому используем --loose-pipe.

При успешном соединении появляется сообщение:

Creating a Classic session to 'username@\\.\MySQL'
Fetching schema names for auto-completion... Press ^C to stop.
Your MySQL connection id is 736
Server version: 8.0.22 MySQL Community Server - GPL
No default schema selected; type \use <schema> to set one.

Выгрузка данных из таблиц в виде JSON

mysqlsh(.lnk) --sql --user <username> --host . -e "SELECT 1 AS value UNION SELECT 2" --result-format json/array
[
{"value":1},
{"value":2}
]

Если вместо --result-format json/array указать обычный --json, в результате объекты, соответствующие строкам, не будут разделены запятыми и весь вывод не будет корректной JSON.

У традиционного клиента mysql нет режима json (в отличие от XML).

Загрузка данных в таблицы из JSON - --import

Возможна только в отдельные колонки, не аналог LOAD DATA INFILE.

https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-json-import-command.html

С импортом строк справляется MySQL Workbench. Но он требует, чтобы набор полей был у всех строк одинаковым (хотя и не обязательно полным для таблицы). Пропускать поля у части строк нельзя.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment