mysql 导入文件夹_MySQL-导入与导出

CSV文件导入MySQL

LOAD DATA INFILE语句允许您从文本文件读取数据,并将文件的数据快速导入数据库的表中。

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

一、将要导入文件的数据对应的数据库表。

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

三、连接到MySQL数据库服务器的帐户具有FILE和INSERT权限。

首先,创建discounts表:

use testdb;

CREATE TABLE discounts (

id INT NOT NULL AUTO_INCREMENT,

title VARCHAR(255) NOT NULL,

expired_date DATE NOT NULL,

amount DECIMAL(10 , 2) NULL,

PRIMARY KEY (id)

);

discounts.csv文件的内容,第一行作为列标题和其他三行则为数据。

id,title,expired date,amout1,"Spring Break 2018",20180401,20

2,"Back to Scholl 2017",20170901,29

3,"Summer 2018",20180820,100

接下来,将数据从F:/worksp/mysql/discounts.csv文件导入到discounts表。

LOAD DATA INFILE 'F:/worksp/mysql/discounts.csv'INTO TABLE discounts

FIELDS TERMINATED BY','ENCLOSED BY'"'LINES TERMINATED BY'\n'IGNORE1 ROWS;

文件的字段由FIELD TERMINATED BY ','指示的逗号终止,并由ENCLOSED BY '"'指定的双引号括起来。

因为文件第一行包含列标题,列标题不需要导入到表中,因此通过指定IGNORE 1 ROWS选项来忽略第一行。

导入时转换数据

数据格式与表中的目标列不匹配,用LOAD DATA INFILE语句中的SET子句进行转换。

有一个discount_2.csv文件中,它存储的过期日期列是mm/dd/yyyy格式。内容如下:

id,title,expired date,amout4,"Item-4","01/04/2018",200

5,"Item-5","01/09/2017",290

6,"Item-6","12/08/2018",122

将数据导入discounts表时,必须使用str_to_date()函数将其转换为MySQL日期格式

LOAD DATA INFILE 'F:/worksp/mysql/discounts_2.csv'

INTO TABLE discounts

FIELDS TERMINATED BY ',' ENCLOSED BY '"'

LINES TERMINATED BY '\n'

IGNORE 1 ROWS

(id,title,@expired_date,amount)

SET expired_date = STR_TO_DATE(@expired_date, '%m/%d/%Y');

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

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

LOAD DATA INFILE中使用LOCAL选项时,客户端程序会读取客户端上的文件并将其发送到MySQL服务器。该文件将被上传到数据库服务器操作系统的临时文件夹,

Windows上的C:\windows\temp,此文件夹不可由MySQL配置或确定。

示例:

LOAD DATA LOCAL INFILE'c:/tmp/discounts.csv'INTO TABLE discounts

FIELDS TERMINATED BY','ENCLOSED BY'"'LINES TERMINATED BY'\n'IGNORE1 ROWS;

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

使用LOCAL选项时,连接到MySQL服务器的帐户不需要具有FILE权限来导入文件。

MySQL导出CSV文件

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

一、MySQL服务器的进程对包含目标CSV文件的目标文件夹具有写访问权限。

二、要导出的目标CSV文件不能存在。

示例:

查询从orders表中查询选择已取消的订单,将此结果集导出为CSV文件

SELECT

orderNumber, status, orderDate, requiredDate, comments

FROM

orders

WHERE

status= 'Cancelled'INTO OUTFILE'F:/worksp/mysql/cancelled_orders.csv'FIELDS ENCLOSED BY'"'TERMINATED BY';'ESCAPED BY'"'LINES TERMINATED BY'\r\n';

该语句在F:/worksp/mysql/目录下创建一个包含结果集,名称为cancelled_orders.csv的CSV文件。

CSV文件包含结果集中的行集合。每行由一个回车序列和由LINES TERMINATED BY '\r\n'子句指定的换行字符终止。文件中的每行包含表的结果集的每一行记录。

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

将数据导出到文件名包含时间戳的CSV文件

将数据导出到CSV文件中,该文件的名称包含创建文件的时间戳。

将整个orders表导出为将时间戳作为文件名的一部分的CSV文件。

SET @TS = DATE_FORMAT(NOW(),'_%Y%m%d_%H%i%s');

SET @FOLDER= 'F:/worksp/mysql/';

SET @PREFIX= 'orders';

SET @EXT= '.csv';

SET @CMD= CONCAT("SELECT * FROM orders INTO OUTFILE '",@FOLDER,@PREFIX,@TS,@EXT,"' FIELDS ENCLOSED BY '\"' TERMINATED BY ';' ESCAPED BY '\"'","LINES TERMINATED BY '\r\n';");

PREPARE statement FROM @CMD;

EXECUTE statement;

首先,构造了一个具有当前时间戳的查询作为文件名的一部分。其次,使用PREPARE语句FROM命令准备执行语句。

最后,使用EXECUTE命令执行语句。

使用列标题导出数据

要添加列标题,需要使用UNION语句如下:

(SELECT 'Order Number','Order Date','Status')

UNION

(SELECT orderNumber,orderDate, status

FROM orders

INTO OUTFILE'F:/worksp/mysql/orders_union_title.csv'FIELDS ENCLOSED BY'"' TERMINATED BY ';' ESCAPED BY '"'LINES TERMINATED BY'\r\n');

处理NULL值

如果结果集中的值包含NULL值,则目标文件将使用“N/A”来代替数据中的NULL值。要解决此问题,您需要将NULL

SELECT

orderNumber, orderDate, IFNULL(shippedDate,'N/A')

FROM

orders INTO OUTFILE'F:/worksp/mysql/orders_null2na.csv'FIELDS ENCLOSED BY'"'TERMINATED BY';'ESCAPED BY'"'LINES

TERMINATED BY'\r\n';

用N/A字符串替换了shippingDate列中的NULL值。 CSV文件将显示N/A而不是NULL值。

值替换为另一个值,例如不适用(N/A),方法是使用IFNULL函数,如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android之ButterKnife--View注入框架

俗话说:“不会偷懒的程序员不是好的程序员!”。作为一名Android开发,是不是经常厌烦了大量的findViewById以及setOnClickListener代码,而ButterKnife是一个专注于Android系统的View注入框架,让你从此从这些烦人臃肿的代码中解脱出来。先来看一段代码示例说明下ButterKnife…

设计模式 - Mediator

意图:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 一般来说,只有对于那种同事类之间是网状结构的关系,才会考虑使用中介者模式。…

6部有生之年必看的BBC “教材级” 地理纪录片,免费领取!

看BBC的纪录片,既可以追溯上下数千年的历史文化,也可以欣赏从宇宙到地心深处的奇妙境界,而及其超级精彩的画面即使定格,也是一幅摄影佳作。BBC纪录片题材广泛、制作精良,观看起来算的上是赏心悦目。对于学习英文&#…

Android之开发中用到的几个多线程解析

在开发工程中线程可以帮助我们提高运行速度,Android开发中我知道的线程有四个一个是老生长谈的Thread,第二个是asyncTask,第三个:TimetTask,第四个是Looper,四个多线程各有个的有点,Thread的运行速度是最快的,AsyncTask的规范性是最棒的,其它两个也有自己的优点,下面先贴…

blazor wasm开发chrome插件

用blazor(Wasm)开发了一个chrome插件感觉效率挺高的,分享给大家先简单介绍下WebAssembly的原理:“WebAssembly是一种用于基于堆栈的虚拟机的二进制指令格式”image如上图,浏览器在执行js时是会经历 Parser转成语法树->Compiler转成字节码-…

求偶的两种方法

import java.util.Scanner;public class Testif {public static void main(String[] args) {// TODO 自动生成的方法存根Scanner scan new Scanner(System.in);System.out.println("请输入一个整数:");long number scan.nextLong(36);String check (numbe…

idea zookeeper的使用_学习ZooKeeper源码,就从这篇开始吧

【ZooKeeper系列】1.ZooKeeper单机版、伪集群和集群环境搭建【ZooKeeper系列】2.用Java实现ZooKeeper API的调用在系列的前两篇文章中,介绍了ZooKeeper环境的搭建(包括单机版、伪集群和集群),对创建、删除、修改节点等场景用命令行的方式进行了测试&…

base target=_self是什么意思

<base target_blank>//在空白页打开 <base target_parent>//在当前页的上一页(父亲)打开 <base target_search>//在浏览器地址栏打开 <base target_self>//在当前页打开 <base target_top>//在最初(祖先)页打开 base 是地址 tar…

都才40出头,近一个月已有至少5名优秀青年学者英年早逝!健康不容忽视

全世界只有3.14 % 的人关注了爆炸吧知识近年来&#xff0c;在工作、生活的层层重压下&#xff0c;正处于事业上升期的科研人员因病逝世的消息屡屡传出。据不完全统计&#xff0c;仅仅今年10月份至今&#xff0c;短短一个多月时间里&#xff0c;已有至少5位优秀青年学者倒下。他…

基于 Spring Security 的开源统一角色访问控制系统 URACS

URACS Java语言开发的统一角色访问控制系统(Unified Role Access Control System)&#xff0c;基于Spring Security 3实现的权限控制系统 程序框架版本说明&#xff1a;Spring MVC 3.0.6 Spring Security 3.1.3 Hibernate 3.6.10 运行演示例子&#xff1a; 例子使用的是MySQL…

Chatopera 王海良:做好开源客服系统

| 作者&#xff1a;王海良| 编辑&#xff1a;刘雪洁| 设计&#xff1a;马丽娜| 责编&#xff1a;王玥敏做好开源客服系统&#xff0c;是我最近的心心念念的事情之一。我想讲的故事&#xff0c;就包括春松客服&#xff0c;一个开源的客服系统。篇章有限&#xff0c;我想从三点来…

Android之ANR异常及解决方法

ANR (Application Not Responding)   ANR定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制…

如何写出无法维护的代码

If builders built buildings the way programmers write programs, then the first woodpecker that came along would destroy civilization. &#xff08;如果建筑师盖房子就像程序员写程序一样&#xff0c;那么&#xff0c;第一只到来的啄木鸟就能毁掉我们的文明&#xff0…

mysql_contents_将MySQLhelpcontents的内容有层次的输出方法推荐

经常会遇到这种情况&#xff0c;在一个不能上网的环境通过MySQL客户端登录数据库&#xff0c;想执行一个操作&#xff0c;却忘了操作的具体语法&#xff0c;各种不方便。其实&#xff0c;MySQL数据库内置了帮助文档&#xff0c;通过help contents即可查看。如下所示&#xff1a…

Android类参考---Fragment(一)

1. 继承关系 java.lang.Object |__android.app.Fragment 实现接口&#xff1a;ComponentCallbacks2 View.OnCreateContextMenuListener 引入版本&#xff1a;API Level 11 已知的子类&#xff1a; DialogFragment、ListFragment、PreferenceFragment、WebViewFragment 2. 类概要…

点开那些优秀的硕博士们的朋友圈,他们都有这些特点!

全世界只有3.14 % 的人关注了爆炸吧知识很多同学都会有这种感觉&#xff0c;读了硕士博士后&#xff0c;兴趣会突然间发生很大变化&#xff0c;发朋友圈也会不一样了。例如&#xff0c;合格的学术研究者&#xff0c;要快速、全面的获取各种最新文献和学界动态&#xff1b;还要持…

对程序员职业的一些建议

&#xff08;转载自Bcwhy编程十万个为什么&#xff09;  从四年前被CSDN采访后职业规化就像软件工程”&#xff09;&#xff0c;经常会有网友&#xff08;尤其是刚毕业的&#xff09;写邮件来问我一些程序员职业生涯的一些问题&#xff0c;至到今天。比如&#xff0c;国企还是…

如何高效的将 DataReader 转成 ListT ?

咨询区 Anthony&#xff1a;我在使用第三方工具包&#xff0c;它返回了一个 DataReader&#xff0c;为了能更方便的使用&#xff0c;我希望有一种快捷方法能够将它转成 List<T>&#xff0c;除了一行一行的迭代赋值之外还有其他好的方式吗&#xff1f;回答区 pim&#xff…

Android之如何成为Android高手

成为Android高手一般分为六个阶段&#xff1a; 第一阶段&#xff1a;熟练掌握Java SE&#xff0c;尤其是对其内部类、线程、并发、网络编程等需要深入研究&#xff1b;熟练掌握基于HTTP协议的编程&#xff0c;清楚POST和GET等请求方式流程和细节&#xff1b;能够进行基本的Java…

java foreach 跳过本次循环_【Java】对foreach循环的思考

阿里java开发手册已经发表&#xff0c;很多都值得认真研究思考&#xff0c;看到零度的思考题&#xff0c;没忍住研究了一下。在这里插入图片描述首先&#xff0c;看一下给出的反例的执行结果。如果是"1"&#xff0c;最后list中的元素为["2"]如果把"1&…