MySQL工作台手册/行政任务/ wbcopytables效用

6.9 wbcopytables效用

wbcopytables是一个包含在MySQL工作台中的命令行实用程序,它允许您将表数据从受支持的源数据库服务器复制到MySQL。MySQL工作台迁移向导用于在模式迁移并在目标MySQL服务器中创建后复制数据。

wbcopytables可以使用ODBC、Python DBAPI或本机MySQL客户端库连接到源数据库。

副本执行选择源数据库中的语句然后将检索到的行插入到目标MySQL服务器。

表6.2文件位置(默认)

操作系统 位置
Linux /usr/bin/wbcopytables
苹果系统 /应用程序/ MySQLWorkbench.app /内容/ MacOS / wbcopytables
视窗 C:\ Program Files \ MySQL \ MySQL Workbench 8.0 \ wbcopytables.exe

连接参数

源连接和目标连接的选项参数是:

  • ——odbc源=ODBC_CONNECTION_STRING.: ODBC连接字符串使用标准ODBC语法。您还可以使用ODBC数据源名称(DSN)。

  • --mysql源=mysql_connection_string.:用于MySQL源(当执行MySQL到MySQL迁移或复制时)。它使用了与MySQL实用程序相同的语法:

    • TCP / IP连接:用户名(密码):@主持人:港口

    • 对于本地套接字连接:用户名(密码):@ ::socket_path

  • ——source-password:传递数据源的连接密码。

  • --target =.mysql_connection_string.:指定目标连接。

  • - 偏相 - 来自Stdin:通过STDIN传递密码。源密码和目标密码必须用制表符分隔。

您可以使用来自源RDBMS的特定于ODBC的数据源选项来指定每次获取源数据的行数选择陈述。

支持SSH隧道复制数据的SSH隧道的源和目标连接的选项参数是:

  • ——source-ssh-port =ssh端口

  • ——source-ssh-host =ssh主机

  • --source-ssh-user =SSH用户

  • ——source-ssh-password =SSH密码

  • ——target-ssh-port =ssh端口

  • ——target-ssh-host =ssh主机

  • ——target-ssh-user =SSH用户

  • --target-ssh-password =SSH密码

表格规格

可以在用于复制操作的命令行中指定一个或多个表。有两种副本类型:

  • 完整表副本:- 桌子

  • 范围副本:——表范围

两种表复制类型都需要一组通用的参数:

  • 源码架构:表所属的模式或目录。如果需要引用,则必须使用源RDBMS的语法进行引用。例如,SQL Server使用(square_brackets)

  • 源表:要复制的表。如果源RDBMS除了使用目录之外还使用模式名,则必须在这里指定模式和表,并用点分隔。例如,[dbo]。[mytable]

  • 目标模式: MySQL模式的名称。如果需要引用,则必须使用MySQL的反引号语法。例如,Sakila.

  • 目标表:MySQL表的名称。

  • 选择表达式:要访问的字段列表选择。这将逐字插入到源文件中选择陈述。

    谨慎

    注意,因为这个表达式是直接复制到源代码中的选择陈述。

对于select表达式,如果源表和目标表以相同的顺序具有相同的字段,并且使用兼容的类型,则可以简单地传递*这里,它将构建一个类似于“SELECT * FROM [dbo].[mytable]“。如果没有,您可以根据您指定字段选择语句,用逗号(,)分隔,并使用特定于源RDBMS的适当转义/引用。还可以指定源RDBMS支持的类型转换和/或数据转换。例如:

(client_id],[的名字],[地址],astext([位置])

因为每个选项都必须被解释为单个选项wbcopytables命令,必须在必要时执行操作系统shell特定报价。通常,用“单个”或“双”引号引用您的参数值足够。这是除了您使用的任何数据库的数据库之外。

全表副本

这个参数执行一个full选择在源表中获取记录,然后将它们插入目标表中。

不需要其他参数。

- 桌子语法如下:

- 桌子source_schema source_table target_schema target_table select_expression

范围复制

这个论点执行一个选择在源表上复制指定范围。该表必须有一个数字独特而不是null.或者首要的关键用来创建在哪里表达范围。

——表范围语法如下:

——表范围Source_Schema Source_Table Target_Schema Target_Table Select_Expression Source_Key Range_Start Range_End

生成的表达式为:

key_column> =range_startkey_column<=Range_end.

如果您指定-1对于Range_End,那么表达式是:

key_column> =range_start

其他选择

  • - 依次计算=数量:如果要复制多个表,可以使用此选项将表划分多个线程。没有支持在许多线程上划分单个表。

  • ——仅计算:只执行一个COUNT (*)选择生成的- 桌子所使用的选项。在这种情况下,可以省略目标模式和表。

  • - 符号目标:对复制的每个目标表执行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:绕过禁用触发步骤。