6.9 Утилита wbcopytables
wbcopytables — это командная утилита, включенная в MySQL Workbench, которая позволяет копировать данные таблиц из поддерживаемого источника базы данных в MySQL. Она используется в Мастере миграции MySQL Workbench для копирования данных после миграции и создания схемы в целевом сервере MySQL.
wbcopytables может подключаться к источнику базы данных с помощью ODBC, Python DBAPI или собственной библиотеки клиента MySQL.
Копирование выполняет оператор SELECT в источниковой базе данных, а затем INSERT для вставки извлеченных строк в целевой сервер MySQL.
Таблица 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.