MySql导入/导出csv文件

3 篇文章 0 订阅
2 篇文章 0 订阅

MySql导入/导出csv文件

1. 导入

(前提是已创建CSV_DB.TBL_NAME的表)

LOAD DATA INFILE '/home/download/test.csv' INTO TABLE CSV_DB.TBL_NAME FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';

常用参数:

  • FIELDS TERMINATED BY ‘,’:指定字段分隔符
  • OPTIONALLY ENCLOSED BY ‘"’:认为双引号中的是一个独立的字段。Excel 转 CSV 时,有特殊字符(逗号、顿号等)的字段,会自动用双引号引起来
  • LINES TERMINATED BY ‘\n’:指定行分隔符,注意,在 Windows 平台上创建的文件,分隔符是 ‘\r\n’

如果需要导入一个列数很多的表,手动创建表会很麻烦。可以使用phpMyAdmin辅助导入/导出。
在这里插入图片描述

2. 导出

SELECT … INTO 语法可以将查询结果保存到变量或文件中:

  • SELECT … INTO var_list # 将字段的值保存到变量中
  • SELECT … INTO OUTFILE # 将选中的行保存到文件中。可以指定列和行的结束符,以生成指定格式的文件。
  • SELECT … INTO DUMPFILE # 将一个单独的行写入文件中,没有格式
mysql > SELECT a,b,a+b INTO OUTFILE '/home/download/test.csv' 
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM test_table;

mysql> SELECT * INTO OUTFILE '/home/download/test.csv' 
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM TBL_NAME;
Query OK, 21000 rows affected (2.01 sec)

常用参数(跟 LOAD DATA INFILE 语法一样):

  • FIELDS TERMINATED BY ‘,’:指定字段分隔符
  • OPTIONALLY ENCLOSED BY ‘"’:认为双引号中的是一个独立的字段。Excel 转 CSV 时,有特殊字符(逗号、顿号等)的字段,会自动用双引号引起来
  • LINES TERMINATED BY ‘\n’:指定行分隔符,注意,在 Windows 平台上创建的文件,分隔符是 ‘\r\n’
3. 注意事项
  1. Windows平台csv文件编码:
    1)win下保存的csv文件注意要手动转至utf-8编码。
    Excel 另存为 CSV 文件后,默认编码是“使用 UTF-8 BOM 编码”,在 Notepad++ 中打开文件,选择“使用 UTF-8 编码”保存即可清除 BOM 头:
    2)数据正常,但无法导入数据,可尝试去除csv头(第一行title)
    在这里插入图片描述
  2. Show fail “ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
    这是由于上传或下载的文件没有在 MySQL 指定的安全目录中, 或者安全目录根本没有开启。
    使用以下命令查看安全目录状态:
SHOW VARIABLES LIKE "secure_file_priv";

mysql> SHOW VARIABLES LIKE “secure_file_priv”;
±-------------------------±----------------------+
| Variable_name | Value |
±-------------------------±----------------------+
| require_secure_transport | OFF |
| secure_auth | ON |
| secure_file_priv | /var/lib/mysql-files/ |
±-------------------------±----------------------+
3 rows in set (0.00 sec)“””

解决办法:
1)在 /etc/my.cnf 配置文件(Windows 平台下是 my.ini)中添加:

secure_file_priv =

“=” 后值为空,意为无限制,你可以使用任意目录
2)在 /etc/my.cnf 配置文件(Windows 平台下是 my.ini)中添加:

secure_file_priv = <#your safe dir#>

“=” 后指定安全目录。推荐使用这种方式。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值