导入表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
系统变量。
要从导出服务器导出表,使用这个过程:
通过执行以下语句来锁定表以确保快照的一致性,以便在导出过程中不能修改表:
mysql> FLUSH TABLES hr。员工,人力资源。经理WITH READ LOCK;
当锁生效时,仍然可以使用表,但只能用于读访问。
在文件系统级别,复制
.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
解锁表格:
mysql>解锁表
要将表导入到导入服务器,请使用以下步骤:
导入模式必须存在。如果需要,执行下面的语句来创建它:
mysql>创建SCHEMA hr
在文件系统级别,复制
.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/数据/人力资源
通过执行命令导入表
导入表
语句,该语句指定.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
文件也可能需要重命名表文件。在某些情况下,允许对列定义进行更改。更改数据类型可能会导致问题。