WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
MySQL Shell включает утилиты для работы с MySQL. Чтобы получить доступ к
утилитам из MySQL Shell, используйте глобальный объект
Утилита контролера модернизации, которая позволяет вам проверить,
готовы ли экземпляры сервера MySQL к модернизации. Утилита, которая позволяет вам импортировать документы JSON коллекции
или таблицы MySQL Server. Функция Можно использовать утилиту, чтобы проверить экземпляры сервера MySQL 5.7
на ошибки совместимости и проблемы для модернизации. С MySQL Shell 8.0.13
можно также использовать это, чтобы проверить экземпляры MySQL 8.0
при другом выпуске статуса GA в ряде выпусков MySQL 8.0. Если вы вызываете
Утилита контролера модернизации не поддерживает проверку
MySQL Server в версии ранее 5.7. С MySQL Shell 8.0.16 утилита контролера модернизации может проверить
конфигурационный файл ( Утилита контролера модернизации может работать по связи X-протокола или по
классической связи протокола MySQL, используя TCP или сокет Unix.
Можно создать связь заранее или определить как аргумент функции.
Утилита всегда создает новую сессию, чтобы соединиться с сервером, таким
образом, глобальная сессия MySQL Shell не затронута. Утилита может произвести свой вывод в текстовом формате по умолчанию
или в формате JSON, который может быть более просто разобрать и обработать
для использования в автоматизации. Формат вызова такой:
Оба аргумента дополнительные. Первый обеспечивает данные о связи, если
связь еще не существует, вторым является словарь, который можно использовать,
чтобы определить следующие опции: Пароль для учетной записи пользователя, которая используется,
чтобы управлять утилитой контролера модернизации. Учетная запись пользователя
с привилегиями Целевая версия сервера MySQL, до которой вы планируете
модернизировать. В MySQL Shell 8.0.16 можно определить выпуск 8.0.11 (первый
MySQL Server 8.0 GA), 8.0.12, 8.0.13, 8.0.14, 8.0.15 или 8.0.16.
Если вы определяете краткую форму номера версии 8.0 или опускаете опцию
Местный путь к Формат, в котором возвращен вывод утилиты контролера модернизации.
Умолчание, если вы опускаете выбор, является текстовым форматом
( Например, следующие команды проверяют сервер MySQL, в настоящее время
связываемый с глобальной сессией, с выводом в текстовом формате:
Следующая команда проверяет сервер MySQL в URI
Следующая команда проверяет тот же самый сервер MySQL на модернизацию
номера выпуска MySQL Server, который соответствует текущему номеру выпуска
MySQL Shell и возвращает вывод JSON для последующей обработки:
С MySQL 8.0.13 можно запустить утилиту контролера модернизации из
командной строки, используя интерфейс команды
mysqlsh. Для получения информации об этом синтаксисе
посмотрите
раздел 4.7. Следующий пример проверяет сервер MySQL на модернизацию до
выпуска 8.0.15 и возвращает JSON:
Данные о связи могут также быть определены как именованные опции
при помощи фигурных скобок, как в следующем примере, который также
показывает, что нижний регистр и дефисы могут использоваться для имени
метода, а не camelCase:
Следующий пример использует сокетное соединение Unix и более старый формат
для вызова утилиты из командной строки, который все еще действителен:
Чтобы получить справку:
Когда вы вызываете утилиту контролера модернизации, MySQL Shell
соединяется с экземпляром сервера и проверяет параметры настройки, описанные
здесь. Например, так:
В этом примере проверки, выполненные на сервере,
возвратили некоторые ошибки для скрипта модернизации, которые были найдены на
проверенном сервере, таким образом, изменения требуются, прежде чем
сервер может быть модернизирован до целевого выпуска MySQL 8.0. Когда вы выбираете вывод JSON, используя опцию словаря
Имя хоста и номер порта для связи MySQL Shell с
сервером MySQL, который был проверен. Обнаруженная версия MySQL сервера, который был проверен. Версия MySQL для проверок модернизации. Количество ошибок, найденных утилитой. Количество предупреждений, найденных утилитой. Количество уведомлений, найденных утилитой. Текст итогового заявления, которое было бы предоставлено в конце
текстового вывода (например, "No known compatibility errors or
issues were found."). Множество объектов JSON, один для каждой отдельной проблемы
модернизации, которая была автоматически проверена (например, использование
удаленных функций). У каждого объекта JSON есть следующие пары ключ/значение:
ID проверки, который является уникальной строкой. Краткое описание проверки. "OK", если проверка успешна, "ERROR" иначе. Длинное описание проверки (при наличии), включающее совет или
сообщение об ошибке, если проверка не сработала. При наличии связь с документацией с дополнительной
информацией или советом. Множество (которое может быть пустым) объектов JSON, представляющих
ошибки, предупреждения или уведомления, которые были найдены в результате
проверки. У каждого объекта JSON есть следующие пары ключ/значение: Уровень сообщения: Error, Warning или Notice. Последовательность, определяющая объект базы данных, к которому
имеет отношение сообщение. При наличии, последовательность с дальнейшим описанием проблемы.
Множество объектов JSON, один для каждой отдельной проблемы
модернизации, которая относится к вашей процедуре обновления и должна быть
проверена вручную (например, изменение плагина идентификации по умолчанию в
MySQL 8.0). У каждого объекта JSON есть следующие пары ключ/значение: ID ручной проверки, который является уникальной строкой. Краткое описание ручной проверки. Уровень сообщения: Warning или Notice. Длинное описание ручной проверки с информацией и советом. При наличии, связь с документацией с дополнительной
информацией или советом. Утилита импорта JSON MySQL Shell, введенная в MySQL Shell 8.0.13,
позволяет вам импортировать документы JSON из файла (или специального файла
FIFO) или стандартного ввода в коллекции сервера MySQL или таблицы.
Она проверяет, что поставляемые документы JSON правильно построены, и
вставляет их в целевую базу данных, устраняя необходимость использовать
многократный С MySQL Shell 8.0.14 утилита импорта может обработать BSON (двойной JSON)
типы данных, которые представляются в документах JSON. Типы данных,
используемые в документах BSON, не поддерживаются JSON, но могут быть
представлены, используя расширения для формата JSON. Утилита импорта может
обработать документы, которые используют расширения JSON, чтобы представлять
типы данных BSON, преобразовать их в идентичное или совместимое представление
MySQL и импортировать значение данных, используя это представление.
Получающиеся переделанные значения данных могут использоваться в выражениях и
индексах, и управляться функциями X DevAPI и SQL-операторами. Можно импортировать документы JSON в таблицу или коллекцию.
Если целевая таблица или коллекция не существуют в указанной базе данных, это
автоматически создается утилитой, используя коллекцию по умолчанию или
структуру таблицы. Коллекция по умолчанию создается, вызывая функцию
Имя коллекции по умолчанию или таблицы это название поставляемого файла
импорта (без расширения файла), имя Чтобы преобразовать расширения JSON для BSON
в типы MySQL, необходимо определить опцию
Утилита импорта JSON требует существующей связи X-протокола с сервером.
Она не может работать по классической связи протокола MySQL. В MySQL Shell API утилита импорта JSON это функция глобального объекта
Название целевой базы данных. Если вы опускаете этот параметр,
MySQL Shell пытается определить и использовать название схемы для текущей
сессии, как определено в последовательность URI, команде
Название целевой коллекции. Это альтернатива определению таблицы и
колонки. Если коллекция не существует, утилита создает ее. Если вы не
определяете ни одну из опций
Название целевой таблицы. Это альтернатива определению коллекции.
Если таблица не существует, утилита создает ее. Название колонки в целевой таблице, куда импортируются документы JSON.
Указанная колонка должна присутствовать в таблице, если таблица уже
существует. Если вы определяете опцию Признает и преобразовывает типы данных BSON, которые представляются,
используя расширения для формата JSON. Умолчание для этой опции
Признает и преобразовывает MongoDB ObjectID, которые являются
12-байтовым типом BSON, используемым в качестве значения
Признает и извлекает метки времени, которая содержится в MongoDB
ObjectID в поле Следующие примеры импортируют документы JSON в файле
У следующего примера нет определенных опций, таким образом, словарь
опущен. Следующий пример импортирует документы JSON в файле
Следующий пример выполняет тот же самый импорт, но не преобразовывая
представления JSON типов данных BSON к представлениям MySQL.
Однако MongoDB ObjectID в документах преобразовывается как требуется MySQL, и
их метки времени также извлечены:
Когда импорт выполнен или если импорт остановлен пользователем с
помощью Ctrl+C или из-за ошибки,
сообщение возвращено пользователю, показывающее количество успешно
импортированных документов JSON и любое применимое сообщение об ошибке.
Сама функция возвращает пустоту или исключение в случае ошибки. Утилита импорта JSON может также быть вызвана из командной строки.
Два альтернативных формата доступны для этого. Можно использовать интерфейс
команды
mysqlsh, который принимает ввод только от файла (или
FIFO) или команду С командным интерфейсом
mysqlsh вы вызываете
утилиту импорта JSON следующим образом:
Для получения информации об этом синтаксисе посмотрите
раздел 4.7. Определите параметры следующим образом: Имя пользователя для учетной записи пользователя, которая
используется, чтобы управлять утилитой импорта JSON. Имя хоста для сервера MySQL. Номер порта для связи MySQL Shell с сервером MySQL. Порт по умолчанию
для этой связи 33060. Название целевой базы данных. Когда вызов идет из командной строки,
необходимо определить целевую базу данных. Можно определить ее в URI или
использовать дополнительную опцию Путь к файлу (или FIFO), содержащему документы JSON,
которые будут импортированы. Опции Опция Следующий пример импортирует документы JSON из файла
Команда Как и с
mysqlsh, необходимо определить целевую базу
данных в URI или с использованием дополнительной опции
После определения пути (или При использовании стандартного ввода, если указанная цель это
таблица, которая существует в указанной схеме, документы импортируются в нее.
Можно определить дальнейший параметр, дающий имя столбца, в этом случае
указанная колонка используется для места назначения импорта. Иначе имя
столбца по умолчанию Если вы импортируете документы, содержащие типы данных BSON
(двоичный JSON), можно также определить опции
Следующий пример читает документы JSON со стандартного ввода и импортирует
их к названной цели Следующий пример с путем к файлу и целью импортирует документы JSON из
файла Следующий пример с путем к файлу, но без цели, импортирует документы JSON
из файла MySQL Shell возвращает сообщение, подтверждающее параметры для импорта,
например, Importing from file "/europe/regions.json"
to table `mydb`.`regions` in MySQL Server at 127.0.0.1:33062. Когда импорт выполнен или остановлен пользователем через
Ctrl+C (или из-за ошибки),
сообщение возвращено пользователю, показывающее количество успешно
импортированных документов JSON и любое применимое сообщение об ошибке.
Процесс возвращает ноль, если импорт закончен успешно,
или код выхода отличный от нуля, если была ошибка. Когда вы определяете Простое значение, содержащее значение поля. MySQL timestamp, созданная с
использованием значения Простое значение, содержащее строковое
представление десятичного значения. Значение Integer. Последовательность, содержащая только регулярное выражение и
игнорирующая опции. Предупреждение печатается, если опции присутствуют.
Строка Base64. Простое значение, содержащее значение поля. Следующие варианты контроля могут быть определены, чтобы приспособить
отображение и преобразование этих типов BSON.
Отключите преобразование "date
". Данные импортируются как вложенный документ JSON точно как
во входном файле. Отключите преобразование BSON "
timestamp". Данные импортируются как
вложенный документ JSON точно как во входном файле. Преобразуйте значение BSON "
decimal" в тип MySQL DOUBLE вместо строки. Отключите преобразование регулярных выражений (BSON
"regex").
Данные импортируются как вложенный документ JSON точно как во входном файле.
Включите опции, связанные с регулярным выражением в
последовательности, а также само регулярное выражение (в формате
Отключите преобразование BSON "
binData". Данные импортируются как
вложенный документ JSON точно как во входном файле. Следующий пример импортирует документы из файла
Глава 6. Утилиты MySQL Shell
util
, который обеспечивает следующие функции:
checkForServerUpgrade()
importJSON()
6.1.
Утилита контролера модернизации
util.checkForServerUpgrade()
позволяет вам проверить, готовы ли экземпляры сервера MySQL к модернизации.
С MySQL Shell 8.0.13 можно выбрать целевой выпуск MySQL Server, до которого
вы планируете модернизировать, начиная с MySQL Server 8.0 General
Availability (GA) release (8.0.11) до номера выпуска MySQL Server, который
соответствует текущему номеру выпуска MySQL Shell.
Утилита контролера модернизации выполняет автоматизированные проверки,
которые важны для указанной целевой версии, и сообщает вам о дальнейших
соответствующих проверках, которые необходимо осуществить вручную.checkForServerUpgrade()
не определяя экземпляр
MySQL Server, проверяется экземпляр, в настоящее время связанный с глобальной
сессией. Чтобы видеть, какой в настоящее время связан, используется команда
\status
.my.cnf
или
my.ini
). Утилита проверяет на любые системные
переменные, которые определяются в конфигурационном файле, но были удалены в
целевом выпуске MySQL Server и также для любых системных переменных, которые
не определяются в конфигурационном файле и будут иметь различное значение по
умолчанию в целевом выпуске MySQL Server. Для этих проверок, когда вы
вызываете checkForServerUpgrade()
,
необходимо обеспечить путь к конфигурационному файлу.
checkForServerUpgrade (ConnectionData connectionData, Dictionary options)
password
ALL
требуется. Можно обеспечить
пароль, используя этот параметр словаря или как часть деталей связи. Если вы
не обеспечиваете пароль, система спросит его, соединяясь с сервером.targetVersion
targetVersion
, утилита проверяет на модернизацию
номер выпуска сервера MySQL, который соответствует текущему номеру
выпуска MySQL Shell.configPath
my.cnf
или
my.ini
для сервера MySQL, который вы
проверяете, например, C:\ProgramData\MySQL\MySQL
Server 8.0\my.ini
. Если вы опускаете путь к файлу, и утилита
контролера модернизации должна осуществить проверку, которая требует
конфигурационного файла, эта проверка терпит неудачу с ошибкой, сообщающей
вам, что необходимо определить путь к файлу.outputFormat
TEXT
). Если вы определяете
JSON
, вывод JSON возвращен вместо
этого, в формате, перечисленном
здесь.
Альтернативно, с MySQL Shell 8.0.17, можно определить параметр командной
строки --json
, чтобы активировать обертку
JSON, когда вы запускаете MySQL Shell, чтобы использовать утилиту контролера
модернизации, в этом случае вывод JSON возвращен как умолчание.
--json=raw
выводит сырой JSON,
--json=pretty
выводит красивый JSON.
mysqlsh>
\status
MySQL Shell version 8.0.16
...
Server version: 5.7.24-log MySQL Community Server (GPL)
...
mysqlsh> util.checkForServerUpgrade()
user@example.com:3306
для модернизации первого MySQL Server 8.0 GA (8.0.11).
Пароль пользователя и путь конфигурационного файла поставляются как часть
словаря опций, вывод возвращен в текстовом формате по умолчанию:
mysqlsh>
util.checkForServerUpgrade('user@example.com:3306', {"password":"password", "targetVersion":"8.0.11", "configPath":"C:\ProgramData\MySQL\MySQL Server 8.0\my.ini"})
mysqlsh>
util.checkForServerUpgrade('user@example.com:3306', {"password":"password", "outputFormat":"JSON", "configPath":"C:\ProgramData\MySQL\MySQL Server 8.0\my.ini"})
mysqlsh -- util checkForServerUpgrade user@localhost:3306 --target-version=8.0.15 --output-format=JSON --config-path=/etc/mysql/my.cnf
mysqlsh -- util check-for-server-upgrade { --user=user --host=localhost --port=3306 } --target-version=8.0.15 --output-format=JSON --config-path=/etc/mysql/my.cnf
./bin/mysqlsh --socket=/tmp/mysql.sock --user=user -e "util.checkForServerUpgrade()"
mysqlsh>
util.help("checkForServerUpgrade")
util.checkForServerUpgrade()
больше не возвращает значение (до MySQL Shell 8.0.13 значение 0, 1
или 2 было возвращено).
The MySQL server at example.com:3306, version
5.7.25-enterprise-commercial-advanced - MySQL Enterprise Server - Advanced Edition (Commercial),
will now be checked for compatibility issues for upgrade to MySQL 8.0.16...
1) Usage of old temporal type
No issues found
2) Usage of db objects with names conflicting with reserved keywords in 8.0
Warning: The following objects have names that conflict with reserved keywords that are new to 8.0.
Ensure queries sent by your applications use `quotes` when referring to them or they will result in errors.
More information: https://dev.mysql.com/doc/refman/en/keywords.html
dbtest.System - Table name
dbtest.System.JSON_TABLE - Column name
dbtest.System.cube - Column name
3) Usage of utf8mb3 charset
Warning: The following objects use the utf8mb3 character set. It is recommended to convert them to use
utf8mb4 instead, for improved Unicode support.
More information: https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-utf8mb3.html
dbtest.view1.col1 - column's default character set: utf8
4) Table names in the mysql schema conflicting with new tables in 8.0
No issues found
5) Foreign key constraint names longer than 64 characters
No issues found
6) Usage of obsolete MAXDB sql_mode flag
No issues found
7) Usage of obsolete sql_mode flags
No issues found
8) ENUM/SET column definitions containing elements longer than 255 characters
No issues found
9) Usage of partitioned tables in shared tablespaces
Error: The following tables have partitions in shared tablespaces. Before upgrading to 8.0 they need
to be moved to file-per-table tablespace. You can do this by running query like
'ALTER TABLE table_name REORGANIZE PARTITION X INTO
(PARTITION X VALUES LESS THAN (30) TABLESPACE=innodb_file_per_table);'
More information: https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html#mysql-nutshell-removals
dbtest.table1 - Partition p0 is in shared tablespace tbsp4
dbtest.table1 - Partition p1 is in shared tablespace tbsp4
10) Usage of removed functions
No issues found
11) Usage of removed GROUP BY ASC/DESC syntax
Error: The following DB objects use removed GROUP BY ASC/DESC syntax. They need to be altered so that
ASC/DESC keyword is removed from GROUP BY clause and placed in appropriate ORDER BY clause.
More information: https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-13.html#mysqld-8-0-13-sql-syntax
dbtest.view1 - VIEW uses removed GROUP BY DESC syntax
dbtest.func1 - FUNCTION uses removed GROUP BY ASC syntax
12) Removed system variables for error logging to the system log configuration
No issues found
13) Removed system variables
Error: Following system variables that were detected as being used will be
removed. Please update your system to not rely on them before the upgrade.
More information: https://dev.mysql.com/doc/refman/8.0/en/added-deprecated-removed.html#optvars-removed
log_builtin_as_identified_by_password - is set and will be removed
show_compatibility_56 - is set and will be removed
14) System variables with new default values
Warning: Following system variables that are not defined in your
configuration file will have new default values. Please review if you rely on
their current values and if so define them before performing upgrade.
More information: https://mysqlserverteam.com/new-defaults-in-mysql-8-0/
back_log - default value will change
character_set_server - default value will change from latin1 to utf8mb4
collation_server - default value will change from latin1_swedish_ci to
utf8mb4_0900_ai_ci
event_scheduler - default value will change from OFF to ON
[...]
15) Schema inconsistencies resulting from file removal or corruption
No issues found
16) Issues reported by 'check table x for upgrade' command
No issues found
17) New default authentication plugin considerations
Warning: The new default authentication plugin 'caching_sha2_password' offers
more secure password hashing than previously used 'mysql_native_password'
(and consequent improved client connection authentication). However, it also
has compatibility implications that may affect existing MySQL installations.
If your MySQL installation must serve pre-8.0 clients and you encounter
compatibility issues after upgrading, the simplest way to address those
issues is to reconfigure the server to revert to the previous default
authentication plugin (mysql_native_password). For example, use these lines
in the server option file:
[mysqld]
default_authentication_plugin=mysql_native_password
However, the setting should be viewed as temporary, not as a long term or
permanent solution, because it causes new accounts created with the setting
in effect to forego the improved authentication security.
If you are using replication please take time to understand how the
authentication plugin changes may impact you.
More information:
https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password-compatibility-issues
https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password-replication
Errors: 6
Warnings: 32
Notices:0
6 errors were found. Please correct these issues before upgrading to
avoid compatibility issues.
Вывод JSON утилиты контролера модернизации
outputFormat
, объект JSON возвращенный
утилитой контролера модернизации, имеет следующие пары ключ/значение:6.2. Утилита импорта JSON
INSERT
или писать скрипты.createCollection()
объекта
schema
. Таблица по умолчанию
составлена следующим образом:
CREATE TABLE `dbname`.`tablename` (target_column JSON,
id INTEGER AUTO_INCREMENT PRIMARY KEY)
CHARSET utf8mb4 ENGINE=InnoDB;
target_column
по умолчанию doc
.convertBsonTypes
, когда вы управляете
утилитой импорта. Дополнительные опции доступны, чтобы управлять отображением
и преобразованием для определенных типов данных BSON. Если вы импортируете
документы с расширениями JSON для типов BSON и не используете этот выбор,
документы импортируются таким же образом, как они представляются
во входном файле.util
:
importJSON (path, options)
path
это строка, определяющая путь к файлу
для файла, содержащего документы JSON, которые будут импортированы. Это может
быть файлом, написанным на диске или специальным файлом FIFO (именованный
канал). Стандартный ввод может только быть импортирован с параметром
командной строки --import
.options
это словарь вариантов импорта,
которые могут быть опущены, если это пусто. До MySQL 8.0.14 словарь
требовался всегда. Следующие варианты доступны, чтобы определить, где и как
документы JSON импортируются:schema:
"
db_name
"\use
или опции MySQL Shell.
Если название схемы не определяется и не может быть определено из
сессии, ошибка возвращена.collection:
"
collection_name
"collection
, table
или tableColumn
, сервис по умолчанию использует
или создает целевую коллекцию с названием поставляемого файла импорта
(без расширения файла).table:
"
table_name
"tableColumn:
"
column_name
"table
,
но опускаете tableColumn
, имя столбца по
умолчанию doc
. Если вы определяете опцию
tableColumn
, но опускаете
table
, название поставляемого файла импорта (без
расширения файла) используется в качестве имени таблицы.convertBsonTypes: true
false
. Когда вы определяете
convertBsonTypes: true
, каждый тип BSON
преобразовывается в идентичное или совместимое представление MySQL, значение
данных импортируется, используя это представление. Дополнительные опции
доступны, чтобы управлять отображением и преобразованием для определенных
типов данных BSON: для списка этих вариантов контроля и преобразований типов
по умолчанию, посмотрите
раздел
6.2.3. Опция convertBsonOid
должна также
быть установлен в true
,
что является настройкой по умолчанию, когда вы определяете
convertBsonTypes: true
. Если вы импортируете
документы с расширениями JSON для типов BSON и не используете
convertBsonTypes: true
, документы импортируются
таким же образом, как они представляются во входном файле.convertBsonOid: true
_id
для документов, представленных в MongoDB
Extended JSON строгого режима. Умолчание для этого: значение опции
convertBsonTypes
, поэтому если тот выбор
установлен в true
, MongoDB ObjectID
автоматически также преобразовывается. Импортируя данные из MongoDB,
convertBsonOid
должен всегда устанавливаться в
true
, если вы не преобразовываете типы BSON,
потому что MySQL Server требует значение _id
,
которое будет преобразовано в тип varbinary(32)
.
extractOidTime:
"
field_name
"_id
для документа и помещает это в отдельное поле в импортированных данных.
extractOidTime
называет поле в документе,
которое содержит метку времени. Метка времени составляет первые 4 байта
ObjectID, которые остаются неизменными.
convertBsonOid: true
должна быть установлена, чтобы использовать этот выбор, который является
умолчанием, когда convertBsonTypes
= true.
/tmp/products.json
в коллекцию
products
базы данных
mydb
:
mysql-js> util.importJson("/tmp/products.json", {schema: "mydb",
collection: "products"})
mysql-py> util.import_json("/tmp/products.json", {"schema": "mydb",
"collection": "products"})
mydb
активная схема для сессии MySQL
Shell. Утилита поэтому импортирует документы JSON в файле
/tmp/stores.json
в коллекцию
stores
базы данных
mydb
:
mysql-js> \use mydb
mysql-js> util.importJson("/tmp/stores.json")
/europe/regions.json
в колонку
jsondata
таблицы
regions
базы данных
mydb
. Типы данных BSON, которые представляются в
документах расширениями JSON, преобразовываются в представление MySQL:
mysql-js> util.importJson('/europe/regions.json', {schema: 'mydb',
table: 'regions', tableColumn: 'jsondata',
convertBsonTypes: true});
mysql-js> util.importJson('/europe/regions.json', {schema: 'mydb',
table: 'regions', tableColumn: 'jsondata',
convertBsonOid: true, extractOidTime:'idTime'});
--import
, которая принимает
ввод от стандартного ввода или файла.6.2.1.
Импортирование документов JSON с командным интерфейсом mysqlsh
mysqlsh user@host:port/mydb -- util importJson <path> [options]
или
mysqlsh user@host:port/mydb -- util import-json <path> [options]
user
host
port
mydb
--schema
.
path
options
--collection
,
--table
и
--tableColumn
определяют целевую коллекцию или целевую таблицу и колонку. Отношения и
умолчания, когда утилита импорта JSON вызвана, используя интерфейс команды
mysqlsh
, совпадают с теми, когда соответствующие варианты
используются в сессии MySQL Shell. Если вы не определяете ни один из этих
вариантов, утилита переходит к использованию или созданию целевой коллекции с
названием поставляемого файла импорта (без расширения файла).--convertBsonTypes
преобразовывает типы
данных BSON, которые представляются, используя расширения для формата JSON.
Дополнительные возможности контроля для определенных типов данных BSON могут
также быть определены, для списка этих вариантов контроля и преобразований
типов по умолчанию, посмотрите
раздел
6.2.3. Опция --convertBsonOid
автоматически
установлена, когда вы определяете --convertBsonTypes
. Импортируя данные MongoDB, --convertBsonOid
должна быть определена, если вы не преобразовываете типы BSON, потому
что MySQL Server требует значение _id
, которое
будет преобразовано в тип varbinary(32)
.
--extractOidTime=
может использоваться, чтобы извлечь метку
времени из значения
field_name
_id
в отдельное поле.
products.json
в коллекцию
products
базы данных:
mydb
:
mysqlsh user@localhost/mydb -- util importJson products.json --collection=products
6.2.2.
Импортирование документов JSON с командой --import
--import
доступна как альтернатива
интерфейсу команды
mysqlsh.
Эта команда обеспечивает краткий синтаксис, не используя имена опций и
принимает документы JSON от стандартного ввода. Синтаксис следующий:
mysqlsh user@host:port/mydb --import <path> [target] [tableColumn] [options]
--schema
. Первый параметр для
--import
путь к файлу, содержащему документы
JSON, которые будут импортированы. Чтобы прочитать документы JSON со
стандартного ввода, определите тире (-
)
вместо пути к файлу. Конец входного потока это индикатор конца файла, который
Ctrl+D в Unix и
Ctrl+Z в Windows.-
для стандартного ввода), следующий параметр это название целевой коллекции
или таблицы. Если стандартный ввод используется, необходимо определить цель.
doc
, который должен
присутствовать в существующей таблице. Если цель не существующая таблица,
ищется коллекция с указанным целевым именем, и документы импортируются туда.
Если никакая такая коллекция не найдена, утилита создает коллекцию с
указанным целевым именем и импортирует документы в нее. Чтобы создать и
импортировать в таблицу, необходимо также определить имя столбца как
дальнейший параметр, в этом случае утилита создает таблицу с указанным именем
и импортирует данные к указанному столбцу.--convertBsonOid
,
--extractOidTime=
,
field_name
--convertBsonTypes
и опции контроля, перечисленные в
разделе
6.2.3.territories
в
базе mydb
. Если никакой коллекции или таблицы
territories
нет, утилита создает коллекцию
territories
и импортирует документы в нее.
Если вы хотите создать и импортировать документы в таблицу
territories
, необходимо определить имя столбца
как дальнейший параметр.
mysqlsh user@localhost/mydb --import - territories
/europe/regions.json
в столбец
jsondata
таблицы
regions
базы mydb
.
Название схемы определяется, используя опцию командной строки
--schema
вместо URI:
mysqlsh user@localhost:33062 --import /europe/regions.json regions \
jsondata --schema=mydb
/europe/regions.json
.
Если никакой коллекции или таблицы regions
(название поставляемого файла импорта без расширения), не найдено в указанной
базе mydb
, утилита создает названную коллекцию
regions
и импортирует документы в нее.
Если уже есть названная коллекция regions
,
утилита импортирует документы в нее.
mysqlsh user@localhost/mydb --import /europe/regions.json
6.2.3.
Преобразования для представлений типов данных BSON
convertBsonTypes: true
(--convertBsonTypes
), чтобы преобразовать типы
данных BSON, которые представляются расширениями JSON, по умолчанию, типы
BSON, импортируется следующим образом:time_t
.convertBsonTypes: true
(--convertBsonTypes
) должен быть определен,
чтобы использовать любой из этих вариантов контроля:ignoreDate: true
(--ignoreDate
)ignoreTimestamp: true
(--ignoreTimestamp
)decimalAsDouble: true
(--decimalAsDouble
)ignoreRegex: true
(--ignoreRegex
)ignoreRegexOptions: false
(--ignoreRegexOptions=false
)/<regular expression>/<options>
).
По умолчанию опции проигнорированы (ignoreRegexOptions:
true
), но предупреждение печатается, если какие-либо опции
присутствовали. ignoreRegex
должна быть
установлена в значение по умолчанию
false
, чтобы определить
ignoreRegexOptions
.ignoreBinary: true
(--ignoreBinary
)/europe/regions.json
в столбец
jsondata
таблицы
regions
базы mydb
.
Типы данных BSON, которые представляются расширениями JSON, преобразовываются
в представления MySQL, за исключением регулярных выражений, которые
импортируются, как документы JSON:
mysqlsh user@localhost/mydb --import /europe/regions.json regions jsondata \
--convertBsonTypes --ignoreRegex
Найди своих коллег! |
Вы можете направить письмо администратору этой странички, Алексею Паутову.