MySQL入门教程系列一----表的导出与导入

1.表的导出

有时需要将MySQL数据库的数据导出到外部存储文件中,MySQL数据库中的数据可以导出成sql文本文件,xml文件或者html文件,同样这些导出的文件也可以导入MySQL数据库中,

1.1用SELECT…INTO OUTFILE导出文件

MySQL数据库在导出数据时,允许使用包含导出定义的SELECT语句进行数据的导出操作,该文件在服务器主机上创建,因此,必须拥有文件写入权限(FILE 权限),才能使用。其基本语法格式如下:

SELECT columnlist FROM table WHERE condition INTO OUTFILE 'filename' [OPTIONS]
--OPTIONS 选项
FIELDS TERMINATED BY 'value'
FIELDS [OPTIONALLY] ENCLOSED BY 'value'
FIELDS ESCAPED BY 'value'
LINES STARTING BY 'value'
LINES TERMINATED BY 'value'

可以看到SELECT columnlist FROM table WHERE condition为查询语句;INTO OUTFILE ‘filename’的作用就是把SELECT语句查询的结果导出到名为filename的外部文件中,filename不能是一个已经存在的文件。[OPTIONS]为可选参数项,OPTIONS部分的语法包括FIELDS和LINES子句,其可能的取值介绍如下:

  1. FIELDS TERMINATED BY ‘value’:设置字段之间的分隔符,可以为单个或多个字符,默认情况为制表符“\t”。
  2. FIELDS [OPTIONALLY] ENCLOSED BY ‘value’:设置字段的包围字符,只能为单个字符,如果使用了OPTIONALLY则只包括CHAR和VARCHAR等字符数据字段。
  3. FIELDS ESCAPED BY ‘value’:设置如何写入或者读取特殊字符,只能为单个字符,即设置转义字符,默认值为“\”。
  4. LINES STARTING BY ‘value’:设置每行数据开头的字符,可以为单个或多个字符,默认情况下不使用任何字符。
  5. LINES TERMINATED BY ‘value’:设置每行数据结尾的字符,可以为单个或者多个字符,默认值为“\n”。

FIELDS和LINES两个子句都是自选的,但是如果两个都被指定了,FIELDS必须位于LINES前面。
示例:

SELECT * FROM test.person INTO OUTFILE “c:\person0.txt”;

1.2 使用mysqldump命令导出文本文件

使用mysqldump工具不仅可以把数据导出为包含CREATE,INSERT的sql文件,也可以导出为纯文本文件。
Mysqldump将创建一个包含CREATE TABLE语句的tablename.sql文件和一个包含其数据的tablename.txt文件。Mysqldump导出文件的基本语法格式如下:

Mysqldump –T path-u root –p dbname [table]  [OPTIONS]
--OPTIONS
--fields-terminated-by=value
--fields-enclosed-by=value
--fields-optionally-enclosed-by=value
--fields-escaped-by=value
--lines-terminated-by=value

只有指定了-T参数才可以导出纯文本文件;path表示导出数据的目录:tables为指定要导出的表名称,如果不指定,将导出数据库dbname中所有的表;[OPTIONS]为可选参数,这些参数要结合参数T使用;
OPTIONS常用的取值如下:
–fields-terminated-by=value:设置字段之间的分割字符,默认为“\t”;
–fields-enclosed-by=value;设置字段的包围字符;
–fields-optionally-enclosed-by=value;设置字段的包围字符,只能为单个字符,只能包括CHAR和VARCHAR等字符数据字段
–fields-escaped-by=value:控制如何写入或读取特殊字符,只能为单个字符,即设置转义字符,默认为反斜线“\”
–fields-terminated-by=value: 控制每行数据结尾的字符,可以为单个或多个字符,默认为“\n”;

示例:

Mysqldump  –T c:\test person –u root –p

以上命令执行成功后,会在C盘创建两个文件,person.sql和person.txt。其中,person.sql包含创建person表的CREATE语句;

2.表的导入

2.1使用LOAD DATA INFILE方式导入文本文件

LOAD DATA 语句用于高速的从一个文本文件中读取行,并装入一个表中,文件名称必须为字符串。语法格式如下:

LOAD DATA INFILE ‘filename.txt’ INTO TABLE tablename [OPTIONS] [IGNORE number LINES]
--OPTIONS 选项
FIELDS TERMINATED BU ‘VALUE’
FIELDS [OPTIONALLY] ENCLOSED BYVALUE’
FIELDS ESCAPED BYVALUE’
LINES STARTING BYVALUE’
LINES TERMINATED BYVALUE

可以看到INFILE后面的filename文件为导入数据的来源;tablename表示待导入的数据表的名称;[OPTIONS]为可选参数选项,包含FIELDS和LINES子句,其可能取值如下:

FIELDS TERMINATED BU ‘VALUE’:设置字段之间的分割字符,默认为“\t”;
FIELDS [OPTIONALLY] ENCLOSED BY ‘VALUE’;设置字段的包围字符,只能为单个字符,只能包括CHAR和VARCHAR等字符数据字段;
FIELDS ESCAPED BY ‘VALUE’: 控制如何写入或读取特殊字符,只能为单个字符,即设置转义字符,默认为反斜线“\”;
LINES STARTING BY ‘VALUE’设置每行字符的开头字符,可以为单个或多个字符,默认不使用;
LINES TERMINATED BY ‘VALUE’:设置每行数据结尾的字符,可以为单个或多个字符,默认为“\n”;
IGNORE number LINES表示忽略文件开始处的行数,执行LOAD DATA语句需要FILE权限。

示例:

LOAD DATA INFILE ‘C:\person.txt’ INTO TABLE test.person

2.2使用mysqlimport命令导入文本文件

使用mysqlimport语句需要指定所需的选项,导入的数据库名称以及导入的数据文件的路径和名称。Mysqlimport命令的基本语法格式如下:

Mysqlimport –u root –p dbname filename.txt [OPTIONS]
--OPTIONS选项
--fields-terminated-by=value
--fields-enclosed-by=value
--fields-optionally-enclosed-by=value
--fields-escaped-by=value
--lines-terminated-by=value
--ignore-lines=n

–fields-terminated-by=value:设置字段之间的分隔字符,可以为单个或多个字符,默认为“\t”;
–fields-enclosed-by=value设置字段的包围字符;
–fields-optionally-enclosed-by=value设置字段的包围字符,只能为单个字符,包括CHAR和VARCHAR等字段的包围字符;
–fields-escaped-by=value:控制如何写入或读取特殊字符,只能为单个字符,即设置转义字符,默认为反斜线“\”;
–lines-terminated-by=value设置每行数据结尾的字符,可以为单个或多个字符,默认为“\n”;
–ignore-lines=n忽略数据的前N行;


除了前面介绍的几个选项之外,mysqlimport还支持许多选项,由于不常用这些选项,不再介绍。


猜你喜欢

转载自blog.csdn.net/wayne980/article/details/58723225