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函数,如下:
mysql 导入文件夹_MySQL-导入与导出相关推荐
- mysql 数据库 文件夹_mysql 数据库 文件夹
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- power bi导入文件夹_从Power BI Desktop中的PDF文件导入数据
power bi导入文件夹 Power BI Desktop is a useful reporting and analytical tool to represent data in variou ...
- 使用idea导入文件夹作为项目时,在项目中的文件夹可能会被隐藏
2019独角兽企业重金招聘Python工程师标准>>> 问题:使用idea导入文件夹作为项目时,有些项目目录下的文件夹或文件可能会被隐藏掉,如图1-1所示 1-1 所造成的原因是 ...
- 【maxscript】批量导入文件夹下obj
需求 已知一个文件夹下包含很多obj和文件夹,2层文件夹下也包含很多obj和文件夹,3层文件夹下--现在需要将该文件夹下所有obj读取 代码 rollout window "批量导入obj& ...
- 用复制mysql/data 文件夹 下面的数据库的形式来复制数据库出现的问题
用复制mysql/data 文件夹 下面的数据库的形式来复制数据库出现的问题 用复制mysql/data 文件夹 下面的数据库的形式来复制数据库出现的问题 提示找不到表,我去看了一下,丢失了很多个表: ...
- mysql表导出和导入命令行_MySQL命令行导出导入数据库和数据表-Go语言中文社区...
MySQL命令行导出数据库: 1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录 如我输入的命令行:cd C:Program FilesMySQLMySQL Server ...
- mysql数据转储方法_Mysql数据库各种导出导入数据方式的区别(我的理解错误还望指正)...
mysqldump,NAVICAT转储,select * outfile在千级数据,万级,百万级数据下的表现. 千级数据 mysqldump导出sql文件 导出是出了拒绝访问的错误:为对应目录(.sq ...
- mysql怎么导出导入数据库结构_mysql导入SQL、导出数据库、表、结构
导入SQL文件:在DOS的 MYSQL安装目录/BIN 目录下用下面命令: mysql -u username -p databasename use database_name 然后使用下面这个命令 ...
- mysql 导入sql命令_MySQL导入.sql文件及常用命令
MySQL导入.sql文件及常用命令 在MySQL Qurey Brower中直接导入*.sql脚本,是不能一次执行多条sql命令的,在mysql中执行sql文件的命令: mysql> so ...
最新文章
- 如何扫描和修复 Linux 磁盘错误
- 常用的前端辅助开发工具有哪些
- 原文件内容更新及备份,特殊标量$^I和@ARGV学习笔记
- python执行linux和window的命令
- Effective Java~3. 私有Constructor 或Enum 强化单例
- 阿里云飞天AI加速器+Serverless容器,帮助图森未来提升资源利用率
- usaco2.11Ordered Fractions
- 一文带你认清数据仓库“维度模型设计”与“分层架构” | 原力计划
- 辨异 —— 概率与统计
- 打开 Freetextbox 的 InsertImageFromGallery 及如何接收 ftb.imagegallery.aspx 返回的图片信息...
- 账龄分析表excel模板_老会计分享财务报表及EXCEL会计报表分析系统模板!收藏领取!...
- ZPL效果在线打印测试和相关手册及编程语言资料
- polyval matlab 怎么用,matlab 中polyval的用法 最好能举个例子
- 8K摄像机研发之路有多难?一起了解你不知道的首款国产8K小型化广播级摄像机背后的故事
- svg图片调整大小和颜色
- 第三篇:【重磅】呼叫中心运营指标KPI字典
- 【数据技术】关于HP Vertica MPP列式数据库资源池设置的一点心得
- 【IoT】基于 CC2530 的 ZigBee 物联网系统设计
- Vim的几个高级玩法
- 好玩的手机淘宝社群,发单初体验
热门文章
- ASP.NET Core中使用MediatR实现命令和中介者模式
- VSCode开发.NETCore项目入门(1)设置中文语言环境
- 与时俱进 | 博客现已运行在 .NET Core 3.0 及 Azure 上
- C#中谁最快:结构还是类?
- [NewLife.XCode]实体类详解
- eShopOnContainers 知多少[7]:Basket microservice
- GitHub宣布GitHub Education 新计划,学校可免费用企业版
- Entity Framework Core 2.0 全局查询过滤器
- 理解C# 4 dynamic(3) – DynamicObject的使用
- 程序员的情人节礼物:当天微软开始Build 2017登记