使用mysqldump命令导出文本文件_ITPUB博客 MySQL 允许将数据导出到外部文件,也可以从外部文件导入数据。MySQL 提供了一些导入数据的工具,包括LOAD DATA 语句、source 命令和mysql 命令。LOAD DATA INFILE 语句用于高速地从一个文本文件中读取行,并输入一张表中。文件名称必须为文字字符串。LOAD DATA 语句的基本格式如下:
LOAD DATA INFILE 'filename.txt' INTO TABLE tablename [OPTIONS] [IGNORE number LINES]
在LOAD DATA 语句中,关键字INFILE 后面的filename 文件为导入数据的来源;tablename 表示待导入的数据表名称;[OPTIONS] 为可选参数选项,OPTIONS 部分的语法包括FIELDS 和LINES 子句,其可能的取值有: FIELDS TERMINATED BY 'value' :设置字段之间的分隔字符,可以为单个或多个字符,默认情况下为“\t ”。 FIELDS [OPTIONALLY] ENCLOSED BY 'value' :设置字段的包围字符,只能为单个字符。如果使用了OPTIONALLY ,则只有CHAR 和VERCHAR 等字符数据字段被包围。 FIELDS ESCAPED BY 'value' :控制如何写入或读取特殊字符,只能为单个字符,即设置转义字符,默认值为“\ ”。 LINES STARTING BY 'value' :设置每行数据开头的字符,可以为单个或多个字符,默认情况下不使用任何字符。 LINES TERMINATED BY 'value' :设置每行数据结尾的字符,可以为单个或多个字符,默认值为“\n ”。IGNORE number LINES 选项表示忽略文件开始处的行数,number 表示忽略的行数。执行LOAD DATA 语句需要FILE 权限。 【例 11.19 】 使用LOAD DATA 语句将D:\person0.txt 文件中的数据导入test_db 数据库的person 表中,SQL 语句如下:
LOAD DATA INFILE 'D:\person0.txt' INTO TABLE test_db.person;
导入数据之前,要将person 表中的数据全部删除,即登录MySQL ,使用DELETE 语句删除person 表中的数据:
mysql> USE test_db; Database changed; mysql> DELETE FROM person; Query OK, 10 rows affected (0.00 sec)
从person0.txt 文件中导入数据,SQL 语句如下:
mysql> LOAD DATA INFILE 'D:\person0.txt' INTO TABLE test_db.person; Query OK, 10 rows affected (0.00 sec) Records: 10 Deleted: 0 Skipped: 0 Warnings: 0 mysql> SELECT * FROM person; +----+---------+-----+-------------+ | id | name | age | info | +----+---------+-----+-------------+ | 1 | Green | 21 | Lawyer | | 2 | Suse | 22 | dancer | | 3 | Mary | 24 | Musician | | 4 | Willam | 20 | sports man | | 5 | Laura | 25 | NULL | | 6 | Evans | 27 | secretary | | 7 | Dale | 22 | cook | | 8 | Edison | 28 | singer | | 9 | Harry | 21 | magician | | 10 | Harriet | 19 | pianist | +----+---------+-----+-------------+
可以看到,语句执行成功之后,person0.txt 文件中的数据导入person 表中了。 【例 11.20 】 使用LOAD DATA 语句将D:\person1.txt 文件中的数据导入test_db 数据库中的person 表中,使用FIELDS 选项和LINES 选项,要求字段之间使用“, ”间隔,所有字段值用双引号括起来,定义转义字符为“\' ”,每行记录以“\r\n ”结尾,SQL 语句如下:
LOAD DATA INFILE 'D:\person1.txt' INTO TABLE test_db.person FIELDS TERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\'' LINES TERMINATED BY '\r\n';
导入数据之前,使用DELETE 语句将person 表中的数据全部删除,执行过程如下:
mysql> DELETE FROM person; Query OK, 10 rows affected (0.00 sec)
从person1.txt 文件中导入数据,执行过程如下:
mysql> LOAD DATA INFILE 'D:\person1.txt' INTO TABLE test_db .person -> FIELDS -> TERMINATED BY ',' -> ENCLOSED BY '\"' -> ESCAPED BY '\'' -> LINES -> TERMINATED BY '\r\n'; Query OK, 10 rows affected (0.00 sec) Records: 10 Deleted: 0 Skipped: 0 Warnings: 0
语句执行成功后,使用SELECT
语句查看person
表中的记录,结果与【例11.19
】的相同。
