Улучшенная по сравнению с 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.
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).
Возможна только в отдельные колонки, не аналог LOAD DATA INFILE
.
https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-json-import-command.html
С импортом строк справляется MySQL Workbench. Но он требует, чтобы набор полей был у всех строк одинаковым (хотя и не обязательно полным для таблицы). Пропускать поля у части строк нельзя.