进口表sdi_file(,sdi_file)……
的导入表
声明进口MyISAM
表中所包含的信息.sdi
(序列化字典信息)元数据文件。导入表
要求文件
有权阅读.sdi
和表内容文件,以及创建
要创建的表的特权。
表可以从一个服务器导出, mysqldump编写一个SQL语句文件,并导入到另一个服务器使用mysql处理转储文件。导入表
方法提供更快的替代方案”生”表文件。
在导入之前,提供表内容的文件必须放在导入服务器的适当模式目录中.sdi
文件必须位于服务器可访问的目录中。例如,.sdi
文件可以放置在由secure_file_priv
系统变量,或(ifsecure_file_priv
为空),位于服务器数据目录下的目录中。
下面的示例介绍如何导出MyISAM
表命名员工
而且经理
从人力资源
模式,并将它们导入到人力资源
其他服务器的模式。这个例子使用了这些假设(在您自己的系统上执行类似的操作,根据需要修改路径名):
对于导出服务器,
export_basedir
表示其基目录,其数据目录为
.export_basedir
/数据对于导入服务器,
import_basedir
表示其基目录,其数据目录为
.import_basedir
/数据表文件从导出服务器导出到
/ tmp /出口
目录,该目录是安全的(其他用户无法访问)。导入服务器使用
/ tmp / mysql-files
作为其命名的目录secure_file_priv
系统变量。
要从导出服务器导出表,请使用以下步骤:
通过执行以下语句锁定表,确保快照的一致性,这样在导出时表就不能被修改:
mysql> FLUSH TABLES。员工,人力资源。经理WITH READ LOCK;
当锁生效时,仍然可以使用表,但只能用于读访问。
在文件系统级别,复制
.sdi
的表内容文件人力资源
架构目录到安全导出目录:的
.sdi
文件位于人力资源
架构目录,但可能具有与表名完全相同的基名。例如,.sdi
文件员工
而且经理
表可能被命名为employees_125.sdi
而且managers_238.sdi
.对于一个
MyISAM
表中,内容文件是它的.MYD
数据文件和.MYI
索引文件。
给定这些文件名,复制命令如下所示:
壳> cdexport_basedir/data/hr shell> cp employees_125. shSdi /tmp/export shell> cp managers_238. shSdi /tmp/export shell> cp employees. sh见这种情况称之为{MYD,多年并}/ tmp /出口shell> cp managers.{MYD,MYI} /tmp/export
打开表:
mysql >解锁表;
要将表导入到导入服务器,请使用以下步骤:
导入模式必须存在。如果需要,执行以下语句来创建它:
mysql创建模式;
在文件系统级别,复制
.sdi
文件到导入服务器secure_file_priv
目录,/ tmp / mysql-files
.对象中复制表内容文件人力资源
模式目录:Shell > CD /tmp/export Shell > cp employees_125. shSdi /tmp/mysql-files shell> cp managers_238. shsdi /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/employees。sdi”、“/ tmp / mysql-files / managers.sdi”;
的.sdi
控件命名的导入服务器目录中不必放置secure_file_priv
系统变量,如果该变量为空;它可以位于服务器可访问的任何目录中,包括导入表的架构目录。如果.sdi
文件被放置在该目录中,但是,它可以被重写;导入操作将创建一个新的.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
文件可能还需要重命名表文件。在某些情况下,允许更改列定义。更改数据类型可能会导致问题。