热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CSV文件与MySQL表的导入、导出

一、将CSV文件导入MySQL表这里主要用到的是LOADDATAINFILE语句在导入文件操作之前,需要准备以下内容:将要导入文件的数据对应的数据库表。准备好一个CSV文件,其数据

一、将CSV文件导入MySQL表

这里主要用到的是LOAD DATA INFILE语句

在导入文件操作之前,需要准备以下内容:

  • 将要导入文件的数据对应的数据库表。
  • 准备好一个CSV文件,其数据与表的列数和每列中的数据类型相匹配。
  • 连接到MySQL数据库服务器的帐户具有FILEINSERT权限。

1、本地导入(这里是centos7)

1)将要导入文件的数据对应的数据库表。

新建一个名为train的表;

use tmp;
CREATE TABLE `train` (
`user_id` varchar(255) DEFAULT NULL,
`age_range` varchar(255) DEFAULT NULL,
`gender` varchar(255) DEFAULT NULL,
`merchant_id` varchar(255) DEFAULT NULL,
`label` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

2)准备好一个CSV文件,其数据与表的列数和每列中的数据类型相匹配。

以下是train.csv文件的内容,第一行作为列标题和后面四行则为数据。

user_id,age_range,gender,merchant_id,label
34176,6,0,944,-1
34176,6,0,412,-1
34176,6,0,1945,-1
34176,6,0,4752,-1

3)连接到MySQL数据库服务器的帐户具有FILEINSERT权限。

这里要把csv文件放到有file权限的目录,否则会报错没有权限

《CSV文件与MySQL表的导入、导出》
《CSV文件与MySQL表的导入、导出》

根据报错提示找到这个有secure_file_priv权限的目录

show global variables like '%secure_file_priv%';

《CSV文件与MySQL表的导入、导出》
《CSV文件与MySQL表的导入、导出》

然后把csv文件复制到这个目录下:

cp train.csv /var/lib/mysql-files/

然后就可以执行导入:

LOAD DATA INFILE '/var/lib/mysql-files/train.csv'
INTO TABLE train
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

执行结果:

《CSV文件与MySQL表的导入、导出》
《CSV文件与MySQL表的导入、导出》

700多万行的数据只用了41s,效果还是可以接受;

2、将文件从客户端导入远程MySQL数据库服务器

可以使用LOAD DATA INFILE语句将数据从客户端(本地计算机)导入远程MySQL数据库服务器。

当您在LOAD DATA INFILE中使用LOCAL选项时,客户端程序会读取客户端上的文件并将其发送到MySQL服务器。该文件将被上传到数据库服务器操作系统的临时文件夹,例如Windows上的C:\windows\temp或Linux上为/tmp目录。 此文件夹不可由MySQL配置或确定。

导入代码:

LOAD DATA LOCAL INFILE '/var/lib/mysql-files/train.csv'
INTO TABLE train
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

唯一的区别是语句中多了个LOCAL选项。

如果加载一个大的CSV文件,将会看到使用LOCAL选项来加载该文件将会稍微慢些,因为需要时间将文件传输到数据库服务器。

使用LOCAL选项时,连接到MySQL服务器的帐户不需要具有FILE权限来导入文件。但是使用LOAD DATA LOCAL将文件从客户端导入到远程数据库服务器时,有一些安全问题应该要注意,以避免潜在的安全风险。

二、从MySQL表导出csv文件

1、

在导出数据之前,必须确保:

  • MySQL服务器的进程对包含目标CSV文件的目标文件夹具有写访问权限。
  • 要导出的目标CSV文件不能存在。

1)要导出的数据查询结果:

SELECT * FROM train;

我这里是取了该表所有的字段;

2)将上述查询结果集导出为CSV文件

SELECT * FROM train
INTO OUTFILE '/var/lib/mysql-files/train.csv'
FIELDS ENCLOSED BY '"'
TERMINATED BY ','
ESCAPED BY '"'
LINES TERMINATED BY '\r\n';

执行结果:

《CSV文件与MySQL表的导入、导出》
《CSV文件与MySQL表的导入、导出》

导出700多万行只用了7s左右;

该sql语句表示,在/data/datas/目录下创建一个名称为train.csv的CSV文件。

CSV文件包含结果集中的行集合。

每行由一个回车序列和由LINES TERMINATED BY ‘\r\n’子句指定的换行字符终止。

文件中的每行包含表的结果集的每一行记录。

每个值由FIELDS ENCLOSED BY ‘”‘子句指示的双引号括起来。 这样可以防止可能包含逗号(,)的值被解释为字段分隔符。 当用双引号括住这些值时,该值中的逗号不会被识别为字段分隔符。

参考链接:

将CSV文件导入MySQL表 – MySQL教程™www.yiibai.com《CSV文件与MySQL表的导入、导出》
MySQL将表导出为CSV – MySQL教程™www.yiibai.com
mysql导出导入文件问题整理www.jianshu.com《CSV文件与MySQL表的导入、导出》


推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文介绍了在Linux系统中设置文件ACL权限的方法和使用说明,包括在centos7.3和centos6.9中开启ACL权限的两种方法:在挂载时指定打开ACL权限和修改默认的属性信息。同时提供了对ACL权限的详细解释和应用场景。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
author-avatar
beitianmolang
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有