日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發(fā)布時間:2023/12/4 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 导入文件夹_MySQL-导入与导出 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

CSV文件導(dǎo)入MySQL

LOAD DATA INFILE語句允許您從文本文件讀取數(shù)據(jù),并將文件的數(shù)據(jù)快速導(dǎo)入數(shù)據(jù)庫的表中。

導(dǎo)入文件操作之前,需要準(zhǔn)備以下內(nèi)容:

一、將要導(dǎo)入文件的數(shù)據(jù)對應(yīng)的數(shù)據(jù)庫表。

二、準(zhǔn)備好一個CSV文件,其數(shù)據(jù)與表的列數(shù)和每列中的數(shù)據(jù)類型相匹配。

三、連接到MySQL數(shù)據(jù)庫服務(wù)器的帳戶具有FILE和INSERT權(quán)限。

首先,創(chuàng)建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文件的內(nèi)容,第一行作為列標(biāo)題和其他三行則為數(shù)據(jù)。

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

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

3,"Summer 2018",20180820,100

接下來,將數(shù)據(jù)從F:/worksp/mysql/discounts.csv文件導(dǎo)入到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 '"'指定的雙引號括起來。

因為文件第一行包含列標(biāo)題,列標(biāo)題不需要導(dǎo)入到表中,因此通過指定IGNORE 1 ROWS選項來忽略第一行。

導(dǎo)入時轉(zhuǎn)換數(shù)據(jù)

數(shù)據(jù)格式與表中的目標(biāo)列不匹配,用LOAD DATA INFILE語句中的SET子句進(jìn)行轉(zhuǎn)換。

有一個discount_2.csv文件中,它存儲的過期日期列是mm/dd/yyyy格式。內(nèi)容如下:

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

將數(shù)據(jù)導(dǎo)入discounts表時,必須使用str_to_date()函數(shù)將其轉(zhuǎn)換為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');

將文件從客戶端導(dǎo)入遠(yuǎn)程MySQL數(shù)據(jù)庫服務(wù)器

使用LOAD DATA INFILE語句將數(shù)據(jù)從客戶端(本地計算機)導(dǎo)入遠(yuǎn)程MySQL數(shù)據(jù)庫服務(wù)器。

LOAD DATA INFILE中使用LOCAL選項時,客戶端程序會讀取客戶端上的文件并將其發(fā)送到MySQL服務(wù)器。該文件將被上傳到數(shù)據(jù)庫服務(wù)器操作系統(tǒng)的臨時文件夾,

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選項來加載該文件將會稍微慢些,因為需要時間將文件傳輸?shù)綌?shù)據(jù)庫服務(wù)器。

使用LOCAL選項時,連接到MySQL服務(wù)器的帳戶不需要具有FILE權(quán)限來導(dǎo)入文件。

MySQL導(dǎo)出CSV文件

導(dǎo)出數(shù)據(jù)之前,必須確保:

一、MySQL服務(wù)器的進(jìn)程對包含目標(biāo)CSV文件的目標(biāo)文件夾具有寫訪問權(quán)限。

二、要導(dǎo)出的目標(biāo)CSV文件不能存在。

示例:

查詢從orders表中查詢選擇已取消的訂單,將此結(jié)果集導(dǎo)出為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/目錄下創(chuàng)建一個包含結(jié)果集,名稱為cancelled_orders.csv的CSV文件。

CSV文件包含結(jié)果集中的行集合。每行由一個回車序列和由LINES TERMINATED BY '\r\n'子句指定的換行字符終止。文件中的每行包含表的結(jié)果集的每一行記錄。

每個值由FIELDS ENCLOSED BY '"'子句指示的雙引號括起來。 這樣可以防止可能包含逗號(,)的值被解釋為字段分隔符。 當(dāng)用雙引號括住這些值時,該值中的逗號不會被識別為字段分隔符。

將數(shù)據(jù)導(dǎo)出到文件名包含時間戳的CSV文件

將數(shù)據(jù)導(dǎo)出到CSV文件中,該文件的名稱包含創(chuàng)建文件的時間戳。

將整個orders表導(dǎo)出為將時間戳作為文件名的一部分的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;

首先,構(gòu)造了一個具有當(dāng)前時間戳的查詢作為文件名的一部分。其次,使用PREPARE語句FROM命令準(zhǔn)備執(zhí)行語句。

最后,使用EXECUTE命令執(zhí)行語句。

使用列標(biāo)題導(dǎo)出數(shù)據(jù)

要添加列標(biāo)題,需要使用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值

如果結(jié)果集中的值包含NULL值,則目標(biāo)文件將使用“N/A”來代替數(shù)據(jù)中的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函數(shù),如下:

總結(jié)

以上是生活随笔為你收集整理的mysql 导入文件夹_MySQL-导入与导出的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。