mysql - 导入导出csv

实战价值

没啥用,因为要进行导出,需要开启 secure_file_priv 参数。

可以通过 set 命令,临时修改参数值,但是通常会失败,因为默认 secure_file_priv 是只读的。

大部分情况,必须修改 my.cnf 文件,然后再重启 mysql。

  • 为了导数据,重启 mysql,多少有点小题大做;
  • 修改这些配置,可能会涉及到文件系统权限和数据库安全性问题。

优势

跨平台,oracle 导出的数据,可以直接导入到 mysql。

劣势

  • 无法确定是空字符串,还是 null;
  • 如果 10 列只要导入 5 列,脚本很难写。

导出 csv

本章节内容,参考自百度 AI

在MySQL中导出CSV文件有多种方法可以实现,以下是几种常见的方法:

  1. 使用 SELECT INTO OUTFILE 语句导出 CSV 文件:
SELECT col1, col2, col3 
INTO OUTFILE '/path/to/file.csv'
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM your_table;

这个方法将查询结果直接导出为 CSV 文件,并指定了逗号作为列分隔符,双引号作为可选的包围符号,换行符作为行分隔符。你需要将 /path/to/file.csv 替换为你希望保存CSV文件的路径。

  1. 使用SELECT语句导出结果,然后编写脚本将结果转换为CSV格式:
SELECT column1, column2, column3
FROM table_name
INTO OUTFILE '/path/to/temp.txt'
LINES TERMINATED BY '\n';
 
  1. 使用SELECT语句生成CSV数据并使用MySQL的CSV存储引擎直接导出:
CREATE TABLE csv_export 
SELECT col1, col2, col3
FROM your_table;
 
ALTER TABLE csv_export
ENGINE = CSV
CHARACTER SET utf8
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n';
 
SELECT *
INTO OUTFILE '/path/to/file.csv'
FROM csv_export;
 
DROP TABLE csv_export;

这个方法创建了一个临时表csv_export,将查询结果插入到该表中,然后使用CSV存储引擎将表导出为CSV文件。导出后,临时表将被删除。

导入 csv

载入文件需要使用 LOAD DATA INFILE 语句。

  1. 样例 A:
LOAD DATA INFILE 'filename.txt'
INTO TABLE mytable
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
  1. 样例 B:
LOAD DATA INFILE 'filename.txt'
INTO TABLE mytable
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(column1, column2, column3);

posted on 2018-05-22 09:24  疯狂的妞妞  阅读(417)  评论(0编辑  收藏  举报

导航