10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 41.5 mb
PDF (A4)- 41.6 mb
手册页(TGZ)- 262.2 kb
手册页(Zip)- 372.3 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

13.2.5 IMPORT TABLE语句

导入表sdi_file(,sdi_file)……

导入表声明进口MyISAM表中所包含的信息.sdi(序列化字典信息)元数据文件。导入表要求文件有权阅读.sdi和表内容文件,以及创建要创建的表的权限。

可以从一台服务器导出表, mysqldump编写一个SQL语句文件并导入到另一个服务器使用mysql处理转储文件。导入表属性提供更快的替代方法表文件。

在导入之前,提供表内容的文件必须放置在导入服务器的适当架构目录中,并且.sdi文件必须位于服务器可访问的目录中。例如,.sdi文件可以放置在由secure_file_priv系统变量,或(如果secure_file_priv为空)在服务器数据目录下的目录中。

下面以导出为例说明MyISAM表命名员工而且经理人力资源模式,并将它们导入到人力资源其他服务器的模式。这个例子使用了这些假设(要在您自己的系统上执行类似的操作,请适当修改路径名称):

  • 对于导出服务器,export_basedir表示其基目录,其数据目录为export_basedir/数据

  • 对于导入服务器,import_basedir表示其基目录,其数据目录为import_basedir/数据

  • 表文件从导出服务器导出到/ tmp /出口目录,此目录是安全的(其他用户不能访问)。

  • 导入服务器使用/ tmp / mysql-files由其命名的目录secure_file_priv系统变量。

要从导出服务器导出表,使用这个过程:

  1. 通过执行以下语句来锁定表以确保快照的一致性,以便在导出过程中不能修改表:

    mysql> FLUSH TABLES hr。员工,人力资源。经理WITH READ LOCK;

    当锁生效时,仍然可以使用表,但只能用于读访问。

  2. 在文件系统级别,复制.sdi的表内容文件人力资源将架构目录转移到安全导出目录:

    • .sdi文件位于人力资源架构目录,但可能没有与表名完全相同的基名。例如,.sdi的文件员工而且经理表可以命名为employees_125.sdi而且managers_238.sdi

    • 对于一个MyISAM表中,内容文件是它的.MYD数据文件和.MYI索引文件。

    给定这些文件名,复制命令如下所示:

    壳> cdexport_basedir/data/hr shell> cp employees_125.使用实例Sdi /tmp/export shell> cp managers_238。Sdi /tmp/export shell> cp employees。见这种情况称之为{MYD,多年并}/ tmp /出口shell> cp managers.{MYD,MYI} /tmp/export
  3. 解锁表格:

    mysql>解锁表

要将表导入到导入服务器,请使用以下步骤:

  1. 导入模式必须存在。如果需要,执行下面的语句来创建它:

    mysql>创建SCHEMA hr
  2. 在文件系统级别,复制.sdi文件到导入服务器secure_file_priv目录,/ tmp / mysql-files.另外,将表内容文件复制到人力资源模式目录:

    Shell > CD /tmp/export Shell > cp employees_125.使用实例Sdi /tmp/mysql-files shell> cp managers_238。sdi /tmp/mysql-files shell> cp employees.{MYD,MYI}import_basedir/data/hr shell> cp managers.{MYD,MYI}import_basedir/数据/人力资源
  3. 通过执行命令导入表导入表语句,该语句指定.sdi文件:

    mysql> IMPORT TABLE FROM /tmp/mysql-files/employeessdi”、“/ tmp / mysql-files / managers.sdi”;

.sdi文件不需要放在导入服务器的目录中secure_file_priv系统变量(如果该变量为空);它可以位于服务器可访问的任何目录中,包括导入表的模式目录。如果.sdi文件被放置在该目录中,但是,它可能被重写;导入操作将创建一个new.sdi文件,它将覆盖旧的.sdi如果操作对新文件使用相同的文件名,则为。

每一个sdi_file值必须是一个字符串字面值.sdi文件或匹配的模式.sdi文件。如果字符串是模式,则任何前导目录路径和.sdi文件名后缀必须按字面意思给出。模式字符只允许出现在文件名的基名部分:

  • ?匹配任何单个字符

  • 匹配任何字符序列,不包括任何字符

使用模式,前一种导入表语句可以写成这样(假设/ tmp / mysql-files目录不包含其他.sdi匹配模式的文件):

IMPORT TABLE FROM /tmp/mysql-files/*.sdi

解释的位置.sdi文件路径名称,服务器使用相同的规则进行导入表作为服务器端的规则加载数据(即非当地的规则)。看到第13.2.7节“LOAD DATA声明”,特别注意用于解释相对路径名的规则。

导入表如果.sdi或者无法找到表文件。导入表后,服务器尝试打开它,并将检测到的任何问题作为警告报告。若要尝试修复任何报告的问题,请使用修理表

导入表不会写入二进制日志。

限制和限制

导入表只适用于非临时MyISAM表。它不适用于用事务性存储引擎创建的表创建临时表,或视图。

一个.sdi导入操作所使用的文件必须生成在与导入服务器数据字典版本和sdi版本一致的服务器上。生成服务器的版本信息可以在.sdi文件:

{"mysqld_version_id":80019, "dd_version":80017, "sdi_version":80016,…}

要确定导入服务器的数据字典和sdi版本,可以查看.sdi导入服务器上最近创建的表的文件。

导入操作之前,表数据和索引文件必须放在导入服务器的模式目录中,除非导出服务器上定义的表使用数据目录索引目录表选择。在这种情况下,在执行导入表声明:

  • 将数据和索引文件放到导入服务器主机上与导出服务器主机上相同的目录中,并在导入服务器架构目录中创建指向这些文件的符号链接。

  • 将数据和索引文件放到导入服务器主机目录中,与导出服务器主机上的目录不同,并在导入服务器架构目录中创建指向这些文件的符号链接。此外,修改.sdi文件以反映不同的文件位置。

  • 将数据和索引文件放到导入服务器主机上的架构目录中,并修改.sdi文件删除数据和索引目录表选项。

对象中存储的任何排序规则id.sdi文件必须引用导出和导入服务器上相同的排序规则。

表的触发器信息没有序列化到表中.sdi文件,因此导入操作不会恢复触发器。

对an的一些编辑.sdi文件在执行导入表语句,而其他语句则有问题,甚至可能导致导入操作失败:

  • 如果导出服务器和导入服务器之间的数据和索引文件的位置不同,则需要更改数据目录和索引目录表选项。

  • 如果要将表导入导入服务器上与导出服务器上不同的模式,则需要更改模式名。

  • 可能需要更改模式名和表名,以适应导出和导入服务器上文件系统区分大小写语义之间的差异或lower_case_table_names设置。中的表名.sdi文件也可能需要重命名表文件。

  • 在某些情况下,允许对列定义进行更改。更改数据类型可能会导致问题。