MySQL表数据的导入与导出方法

38次阅读
没有评论

共计 2431 个字符,预计需要花费 7 分钟才能阅读完成。

本篇内容介绍了“MySQL 表数据的导入与导出方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

LOAD DATA INFILE

LOAD DATA INFILE 语句可以快速将文本记录导入到表中,SELECT … INTO OUTFILE 可以将表中数据导入到文件中,两者的 FIELDS、LINES 子句语法相同。
执行语句的用户需要有 FILE 权限,且 mysql 用户对数据文件可读。
mysqlimport 也可以实现将文本文件导入到表中,mysqlimport 也是向服务器调用 LOAD DATA INFILE 语句,–local 选项可以读取客户端的文件。

LOAD DATA INFILE 语法如下:

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE  file_name 
 [REPLACE | IGNORE]
 INTO TABLE tbl_name
 [PARTITION (partition_name,...)]
 [CHARACTER SET charset_name]
 [{FIELDS | COLUMNS}
 [TERMINATED BY  string]
 [[OPTIONALLY] ENCLOSED BY  char ]
 [ESCAPED BY  char]
 ]
 [LINES
 [STARTING BY  string]
 [TERMINATED BY  string]
 ]
 [IGNORE number {LINES | ROWS}]
 [(col_name_or_user_var,...)]
 [SET col_name = expr,...]

LOCAL
当指定 local 时,客户端将读取文件发送到服务器操作系统的临时目录 (非 MySQL 临时目录),如空间不如将导致执行失败。如未指定 local,则会从服务器读取,相对路径是相对于 data_dir 的路径。

LOAD DATA INFILE: 当数据非法或数据唯一索引冲突将导致执行失败。LOAD DATA LOCAL INFILE:因为服务器端无法终止客户端文件发送,当数据非法或数据唯一索引冲突时将会警告忽略错误继续,类似 IGNORE。

REPLACE
出现数据唯一索引冲突将会替代现有的记录

IGNORE
出现数据唯一索引冲突将会被忽略。如果 IGNORE 与 REPLACE 都没指定,则取决于 LOCAL 选项。如果 local 也没有指定,则重复数据之后的文件数据将被不会执行,如指定 local,则会忽略冲突继续执行。

IGNORE number LINES
指定跳过文件开头的几行记录

LOAD DATA INFILE 用法:

 默认 load data infile 的格式 (不指定 FIELDS,LINES 选项)
FIELDS TERMINATED BY  \t 
 ENCLOSED BY  
 ESCAPED BY  \\ 
LINES TERMINATED BY  \n 
STARTING BY  
导入 csv 文件
LOAD DATA INFILE  data.txt  INTO TABLE tbl_name
 FIELDS TERMINATED BY  ,  ENCLOSED BY  
 LINES TERMINATED BY  \r\n 
 IGNORE 1 LINES;
导入包含指定列的文件
LOAD DATA INFILE  data.txt  INTO TABLE tbl_name
 FIELDS TERMINATED BY  , 
 (column2,column3);
导入文件设定指定列的值
LOAD DATA INFILE  data.txt  INTO TABLE tbl_name
 FIELDS TERMINATED BY  , 
 (column1,column2)
 set column3 = CURRENT_TIMESTAMP;;

SELECT … INTO OUTFILE

SELECT … INTO OUTFILE 会将查询结果写入到服务器,因此需要有 FILE 权限,同时需要对指定的路径有写入权限,且指定文件不能是服务器已有文件。
客户端生成指定结果文件可使用 mysql -e SELECT … file_name

SELECT … INTO OUTFILE 与 LOAD DATA INFILE 的 FIELDS、LINES 子句语法相同。

OPTION 选项含义如下:

FIELDS TERMINATED BY value
设置字段之间的分隔字符,可以为单个或多个字符,默认为制表符 \t

FIELDS [OPTIONALLY] ENCLOSED BY value
设置字段的包围字符,只能为单个字符

FIELDS ESCAPED BY value
设置转义字符,只能为单个字符,默认值为‘\’

LINES STARTING BY value
设置每行数据开头的字符,可以为单个或多个字符,默认情况下不使用任何字符

LINES TERMINATED BY value
设置每行数据结尾的字符,可以为单个或多个字符,默认值为 \n ,WINDOWS 回车换行符为 \r\n

 导出 csv 格式的文件
SELECT a,b,a+b INTO OUTFILE  /tmp/result.txt 
 FIELDS TERMINATED BY  ,  OPTIONALLY ENCLOSED BY  
 LINES TERMINATED BY  \n 
 FROM test_table;

mysqldump -T path dbname tbl_name  也可以生成文本文件,在 path 目录生成一个 tbl_name.sql 表定义文件和 tbl_name.txt 文件表数据文件,可以指定 fields 与 lines 选项指定生成数据文件的格式。

“MySQL 表数据的导入与导出方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-01发表,共计2431字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)