Spec-Zone.ru › MySQL Workbench

6.9 Утилита wbcopytables

wbcopytables — это командная утилита, включенная в MySQL Workbench, которая позволяет копировать данные таблиц из поддерживаемого источника базы данных в MySQL. Она используется в Мастере миграции MySQL Workbench для копирования данных после миграции и создания схемы в целевом сервере MySQL.

wbcopytables может подключаться к источнику базы данных с помощью ODBC, Python DBAPI или собственной библиотеки клиента MySQL.

Копирование выполняет оператор SELECT в источниковой базе данных, а затем INSERT для вставки извлеченных строк в целевой сервер MySQL.

Таблица 6.2 Расположение файла (по умолчанию)

Таблица 6.2 Расположение файла (по умолчанию)
Операционная система Расположение
Linux /usr/bin/wbcopytables
macOS /Applications/MySQLWorkbench.app/Contents/MacOS/wbcopytables
Windows C:\Program Files\MySQL\MySQL Workbench 8.0\wbcopytables.exe

Параметры подключения

Параметры опций для подключения источника и цели:

  • --odbc-source=ODBC_connection_string: Синтаксис строки подключения ODBC использует стандартный синтаксис ODBC. Вы также можете использовать имя источника данных ODBC (DSN).

  • --mysql-source=MySQL_connection_string: Используется для источников MySQL (при миграции или копировании MySQL в MySQL). Использует тот же синтаксис, что и утилиты MySQL:

    • Для подключений TCP/IP: username[:password]@host:port

    • Для подключений через локальный сокет: username[:password]@::socket_path

  • --source-password: Передает пароль подключения к источнику данных.

  • --target=MySQL_connection_string: Указывает подключение назначения.

  • --passwords-from-stdin: Передает пароли через STDIN. Пароли источника и назначения должны быть разделены символом табуляции.

Вы можете использовать специфичные для ODBC параметры источника данных из источника СУБД для указания количества строк, которые нужно извлекать за раз для оператора SELECT источника.

Параметры опций для подключения источника и назначения, которые поддерживают туннелирование SSH для копирования данных:

  • --source-ssh-port=ssh port

  • --source-ssh-host=ssh host

  • --source-ssh-user=ssh user

  • --source-ssh-password=ssh password

  • --target-ssh-port=ssh port

  • --target-ssh-host=ssh host

  • --target-ssh-user=ssh user

  • --target-ssh-password=ssh password

Спецификация таблицы

Для операции копирования можно указать одну или несколько таблиц в командной строке. Существуют два типа копирования:

  • Полное копирование таблицы: --table

  • Копирование диапазона: --table-range

Оба типа копирования таблиц требуют набора общих аргументов:

  • Схема источника: Схема или каталог, к которому принадлежит таблица. Если требуется цитирование, оно должно осуществляться в соответствии с синтаксисом источника СУБД. Например, SQL Server использует [квадратные_скобки].

  • Таблица источника: Копируемая таблица. Если источник СУБД использует имя схемы в дополнение к каталогу, здесь должны быть указаны и схема, и таблица, разделенные точкой. Например, [dbo].[mytable].

  • Схема назначения: Имя схемы MySQL. Если необходимо цитирование, оно должно использовать синтаксис MySQL с обратными кавычками. Например, `sakila`.

  • Таблица назначения: Имя таблицы MySQL.

  • Выражение SELECT: Список полей, подлежащих SELECT. Это будет вставлено дословно в оператор SELECT источника.

    Внимание

    Будьте осторожны, так как это выражение копируется напрямую в оператор SELECT источника.

Для выражения SELECT, если у таблиц источника и назначения одинаковые поля в том же порядке и совместимые типы, можно просто указать *, что создаст запрос типа "SELECT * FROM [dbo].[mytable]". Если нет, вы можете указать поля, как и в операторе SELECT, разделенные запятыми (,) с соответствующим экранированием/цитированием, специфичным для источника СУБД. Вы также можете указать приведения типов и/или преобразования данных, поддерживаемые источником СУБД. Например:

[client_id], [name], [address], AsText([location])

Поскольку каждая опция должна интерпретироваться как отдельная опция командой wbcopytables, необходимо использовать специфичное для ОС экранирование, когда это необходимо. Обычно достаточно заключить значения параметров в одинарные или двойные кавычки. Это дополнительно к любому специфическому для базы данных цитированию, которое вы используете.

Полное копирование таблицы

Этот аргумент выполняет полное SELECT над таблицей источника, извлекает записи и затем вставляет их в целевую таблицу.

Дополнительные аргументы не требуются.

Синтаксис --table:

--table Source_Schema Source_Table Target_Schema Target_Table Select_Expression

Копирование диапазона

Этот аргумент выполняет SELECT копирование таблицы источника для указанного диапазона. Таблица должна иметь числовой UNIQUE NOT NULL или PRIMARY KEY, используемый для создания выражения WHERE диапазона.

Синтаксис --table-range:

--table-range Source_Schema Source_Table Target_Schema Target_Table Select_Expression Source_Key Range_Start Range_End

Сгенерированное выражение:

key_column >= range_start AND key_column <= range_end

Если вы укажете -1 для Range_End, выражение будет:

key_column >= range_start

Другие опции

  • --thread-count=Number: Если вы копируете более одной таблицы, вы можете использовать эту опцию для разделения таблиц по нескольким потокам. Поддержка разделения одной таблицы по многим потокам отсутствует.

  • --count-only: Выполняет только COUNT(*) SELECT, сгенерированное опцией --table. Целевую схему и таблицу в этом случае можно опустить.

  • --truncate-target: Выполняет команду TRUNCATE TABLE для каждой целевой таблицы, которая копируется.

Обработка триггеров

Поскольку в MySQL нет способа временно отключить триггеры, и они могут повлиять на процесс копирования, MySQL Workbench создаст резервную копию и удалит все триггеры из целевой базы данных MySQL перед началом процесса копирования, а затем восстановит эти триггеры после завершения копирования. Триггеры резервируются в целевой схеме в таблице с именем wb_tmp_triggers.

  • --disable-triggers-on=Schema_Name: Выполняет процесс создания резервной копии и удаления всех триггеров в указанной схеме.

  • --reenable-triggers-on=Schema_Name: Восстанавливает триггеры, предварительно сохраненные в таблице wb_tmp_triggers.

  • --dont-disable-triggers: Опускает шаг отключения триггеров.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/workbench-en/wbcopytables.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API