IMPORT TABLE FROM sdi_file [, sdi_file] ...
      The IMPORT TABLE statement imports
      MyISAM tables based on information contained in
      .sdi (serialized dictionary information)
      metadata files. IMPORT TABLE
      requires the FILE privilege to read
      the .sdi and table content files, and the
      CREATE privilege for the table to
      be created.
    
      Tables can be exported from one server using
      mysqldump to write a file of SQL statements and
      imported into another server using mysql to
      process the dump file. IMPORT TABLE
      provides a faster alternative using the “raw” table
      files.
    
      Prior to import, the files that provide the table content must be
      placed in the appropriate schema directory for the import server,
      and the .sdi file must be located in a
      directory accessible to the server. For example, the
      .sdi file can be placed in the directory
      named by the secure_file_priv
      system variable, or (if
      secure_file_priv is empty) in a
      directory under the server data directory.
    
      The following example describes how to export
      MyISAM tables named
      employees and managers from
      the hr schema of one server and import them
      into the hr schema of another server. The
      example uses these assumptions (to perform a similar operation on
      your own system, modify the path names as appropriate):
For the export server,
export_basedirrepresents its base directory, and its data directory is.export_basedir/dataFor the import server,
import_basedirrepresents its base directory, and its data directory is.import_basedir/dataTable files are exported from the export server into the
/tmp/exportdirectory and this directory is secure (not accessible to other users).The import server uses
/tmp/mysql-filesas the directory named by itssecure_file_privsystem variable.
To export tables from the export server, use this procedure:
Ensure a consistent snapshot by executing this statement to lock the tables so that they cannot be modified during export:
mysql> FLUSH TABLES hr.employees, hr.managers WITH READ LOCK;While the lock is in effect, the tables can still be used, but only for read access.
At the file system level, copy the
.sdiand table content files from thehrschema directory to the secure export directory:The
.sdifile is located in thehrschema directory, but might not have exactly the same basename as the table name. For example, the.sdifiles for theemployeesandmanagerstables might be namedemployees_125.sdiandmanagers_238.sdi.For a
MyISAMtable, the content files are its.MYDdata file and.MYIindex file.
Given those file names, the copy commands look like this:
$> cd export_basedir/data/hr $> cp employees_125.sdi /tmp/export $> cp managers_238.sdi /tmp/export $> cp employees.{MYD,MYI} /tmp/export $> cp managers.{MYD,MYI} /tmp/exportUnlock the tables:
mysql> UNLOCK TABLES;
To import tables into the import server, use this procedure:
The import schema must exist. If necessary, execute this statement to create it:
mysql> CREATE SCHEMA hr;At the file system level, copy the
.sdifiles to the import serversecure_file_privdirectory,/tmp/mysql-files. Also, copy the table content files to thehrschema directory:$> cd /tmp/export $> cp employees_125.sdi /tmp/mysql-files $> cp managers_238.sdi /tmp/mysql-files $> cp employees.{MYD,MYI} import_basedir/data/hr $> cp managers.{MYD,MYI} import_basedir/data/hrImport the tables by executing an
IMPORT TABLEstatement that names the.sdifiles:mysql> IMPORT TABLE FROM '/tmp/mysql-files/employees.sdi', '/tmp/mysql-files/managers.sdi';
      The .sdi file need not be placed in the
      import server directory named by the
      secure_file_priv system variable
      if that variable is empty; it can be in any directory accessible
      to the server, including the schema directory for the imported
      table. If the .sdi file is placed in that
      directory, however, it may be rewritten; the import operation
      creates a new .sdi file for the table, which
      overwrites the old .sdi file if the operation
      uses the same file name for the new file.
    
      Each sdi_file value must be a string
      literal that names the .sdi file for a table
      or is a pattern that matches .sdi files. If
      the string is a pattern, any leading directory path and the
      .sdi file name suffix must be given
      literally. Pattern characters are permitted only in the base name
      part of the file name:
?matches any single character*matches any sequence of characters, including no characters
      Using a pattern, the previous IMPORT
      TABLE statement could have been written like this
      (assuming that the /tmp/mysql-files directory
      contains no other .sdi files matching the
      pattern):
    
IMPORT TABLE FROM '/tmp/mysql-files/*.sdi';
      To interpret the location of .sdi file path
      names, the server uses the same rules for
      IMPORT TABLE as the server-side
      rules for LOAD DATA (that is, the
      non-LOCAL rules). See
      Section 15.2.9, “LOAD DATA Statement”, paying particular attention to the
      rules used to interpret relative path names.
    
      IMPORT TABLE fails if the
      .sdi or table files cannot be located. After
      importing a table, the server attempts to open it and reports as
      warnings any problems detected. To attempt a repair to correct any
      reported issues, use REPAIR TABLE.
    
      IMPORT TABLE is not written to the
      binary log.
        IMPORT TABLE applies only to
        non-TEMPORARY MyISAM
        tables. It does not apply to tables created with a transactional
        storage engine, tables created with
        CREATE TEMPORARY
        TABLE, or views.
      
        An .sdi file used in an import operation
        must be generated on a server with the same data dictionary
        version and sdi version as the import server. The version
        information of the generating server is found in the
        .sdi file:
      
{
   "mysqld_version_id":80019,
   "dd_version":80017,
   "sdi_version":80016,
   ...
}
        To determine the data dictionary and sdi version of the import
        server, you can check the .sdi file of a
        recently created table on the import server.
      
        The table data and index files must be placed in the schema
        directory for the import server prior to the import operation,
        unless the table as defined on the export server uses the
        DATA DIRECTORY or INDEX
        DIRECTORY table options. In that case, modify the
        import procedure using one of these alternatives before
        executing the IMPORT TABLE
        statement:
Put the data and index files into the same directory on the import server host as on the export server host, and create symlinks in the import server schema directory to those files.
Put the data and index files into an import server host directory different from that on the export server host, and create symlinks in the import server schema directory to those files. In addition, modify the
.sdifile to reflect the different file locations.Put the data and index files into the schema directory on the import server host, and modify the
.sdifile to remove the data and index directory table options.
        Any collation IDs stored in the .sdi file
        must refer to the same collations on the export and import
        servers.
      
        Trigger information for a table is not serialized into the table
        .sdi file, so triggers are not restored by
        the import operation.
      
        Some edits to an .sdi file are permissible
        prior to executing the IMPORT
        TABLE statement, whereas others are problematic or may
        even cause the import operation to fail:
Changing the data directory and index directory table options is required if the locations of the data and index files differ between the export and import servers.
Changing the schema name is required to import the table into a different schema on the import server than on the export server.
Changing schema and table names may be required to accommodate differences between file system case-sensitivity semantics on the export and import servers or differences in
lower_case_table_namessettings. Changing the table names in the.sdifile may require renaming the table files as well.In some cases, changes to column definitions are permitted. Changing data types is likely to cause problems.