Java中將txt文件導(dǎo)入到mysql基本的思路,操作流獲取到文件具體信息,然后將信息拼接成mysql插入到數(shù)據(jù)庫(kù)中。
創(chuàng)新互聯(lián)長(zhǎng)期為近1000家客戶(hù)提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為臨朐企業(yè)提供專(zhuān)業(yè)的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),臨朐網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
1.先讀取txt文件的內(nèi)容,文件內(nèi)容可以按照一定的規(guī)律進(jìn)行排列,這樣程序讀取就方便。
2.java.io.IOExceptionimportjava.io.RandomAccessFileimportjava.io.UnsupportedEncodingException。
3.import java.text.SimpleDateFormat,import java.util.Date, import java.util.regex.Matcher,
import java.util.regex.Pattern
4.import com.config.Constants; import com.utils.UUIDUtil;
5.public static final String TXT_FILE_PATH =“D://testUser.txt。
public static final String openFileStyle =“r”。
例如下面的命令把c:\1.txt文件中的內(nèi)容插入到數(shù)據(jù)庫(kù)test的表t中:
load
data
infile
'c:\1.txt'
into
table
test.t;
mysql在linux命令行下導(dǎo)入txt文件
mysql導(dǎo)入txt的命令如下
但如果在終端中通過(guò)
登陸的話(huà),輸入以上命令會(huì)報(bào)錯(cuò):
ERROR 1148 (42000): The used command is not allowed with this MySQL version
大家不要被報(bào)錯(cuò)的表面翻譯給誤導(dǎo)了,這其實(shí)是個(gè)權(quán)限問(wèn)題,解決方法如下
在通過(guò)終端輸入時(shí),加上一個(gè)參數(shù)--local-infile = 1 詳細(xì)解釋請(qǐng)自行百度。
用下面語(yǔ)句登陸后再進(jìn)行導(dǎo)入,就成功了
mysqlimport方法導(dǎo)入文件:
其實(shí)無(wú)論是load data還是mysqlimport,導(dǎo)入是事務(wù),如果不是則設(shè)置引擎支持事務(wù)。
如何解決大文件導(dǎo)入?當(dāng)有十幾甚至幾十G文件需要導(dǎo)入時(shí),因?yàn)閷?dǎo)入中間可能會(huì)失敗,如果一次性導(dǎo)入,導(dǎo)入失敗會(huì)導(dǎo)致回滾,代價(jià)太高,從幾十G文件中尋找問(wèn)題也是很頭疼的事情。因此,需要先將大文件拆成小文件,比如split命令,按2萬(wàn)行一個(gè)單位拆成小文件,以后綴編號(hào)區(qū)分,編寫(xiě)腳本進(jìn)行自動(dòng)導(dǎo)入。如果發(fā)生的錯(cuò)誤,只需要從小文件中定位問(wèn)題即可。然后重啟導(dǎo)入腳本。
首先我們使用mysql提供的命令行界面來(lái)導(dǎo)入數(shù)據(jù)庫(kù),確保自己的電腦中安裝了mysql數(shù)據(jù)庫(kù),我們可以通過(guò)命令行來(lái)確認(rèn)是否安裝了mysql數(shù)據(jù)庫(kù),當(dāng)然,第一步是打開(kāi)mysql的數(shù)據(jù)庫(kù)服務(wù),我們使用命令行來(lái)打開(kāi):如下圖所示:
啟動(dòng)mysql后,我們找到需要用到的腳本文件,也就是數(shù)據(jù)庫(kù)文件,當(dāng)然,我們首先得建立一個(gè)數(shù)據(jù)庫(kù),這樣才可以導(dǎo)入腳本,如下圖所示:
我們?cè)趯⒛_本拷到本地磁盤(pán)的根目錄,這樣方便進(jìn)入找到腳本,這里以d盤(pán)來(lái)說(shuō)明,使用test.sql:接著我們來(lái)到命令行,使用source
d:/test.sql;來(lái)導(dǎo)入數(shù)據(jù)庫(kù),先進(jìn)入mysql,如下圖所示:
首先要在數(shù)據(jù)庫(kù)中建立好數(shù)據(jù)庫(kù),然后導(dǎo)入腳本,所以先建立一個(gè)數(shù)據(jù)庫(kù)哦,不要腳本是不知道你要往哪個(gè)數(shù)據(jù)庫(kù)中導(dǎo)入腳本的,如下圖所示:
然后就可以輸入導(dǎo)入.sql文件命令:
mysql
use
數(shù)據(jù)庫(kù)名;
mysql
source
d:/test.sql;
如下圖所示:
6
看到上面的畫(huà)面,說(shuō)明mysql數(shù)據(jù)庫(kù)已經(jīng)導(dǎo)入成功了哦!
是不是很簡(jiǎn)單呢?現(xiàn)在來(lái)介紹第二種方法,使用mysql圖形工具導(dǎo)入數(shù)據(jù)庫(kù),我們還是使用test.sql腳本來(lái)說(shuō)明:
1: 登錄數(shù)據(jù)庫(kù): 默認(rèn)用戶(hù)名: root 默認(rèn)密碼: root
2: 顯示數(shù)據(jù)庫(kù):
3: 創(chuàng)建一個(gè)practice數(shù)據(jù)庫(kù),作為演示用:
4: 導(dǎo)入本地?cái)?shù)據(jù)
說(shuō)明:
load data: 讀取數(shù)據(jù)
local: 默認(rèn)是使用服務(wù)器文件 , 如果想用電腦里的本地文件
replace 如果有主鍵約束 , 在遇到重名的 , replace進(jìn)行替換 , 或者用ignore不替換 , 如果沒(méi)約束 , 可以不寫(xiě)
fields terminated by',': 指定分隔符 , 默認(rèn)是'/t'
1、在MySQL數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)用戶(hù)表user,包含三個(gè)最基礎(chǔ)字段:主鍵id,姓名name和年齡age。
CREATE?TABLE?USER(
id?INT?UNSIGNED?NOT?NULL?AUTO_INCREMENT,
name?VARCHAR(32)?NOT?NULL,
age?tinyint?UNSIGNED,
PRIMARY?KEY?(id)
)ENGINE=InnoDB CHARSET=utf8;
2、制作一個(gè)user.txt文件,每一條內(nèi)容用Tab鍵進(jìn)行分隔不同的屬性,多條換行。如果該字段為NULL,則用/N表示。 里面包含內(nèi)容如下:
雷雪松 31
raykaeso 25
leixuesong?45
barbie?/N
3、使用MySQL命令導(dǎo)入txt文本,指定本地路徑和對(duì)應(yīng)表中的字段。
LOAD?DATA?LOCAL?INFILE?"H:/user.txt"?INTO?TABLE?USER(name,age);