记一次“曲折“的MySQL数据导出
最近需要導(dǎo)出線上的某些數(shù)據(jù)給業(yè)務(wù)人員,由于不能直接操作生產(chǎn)庫(kù),自己寫了sql之后請(qǐng)DBA幫忙導(dǎo)出生產(chǎn)數(shù)據(jù)
得到了兩個(gè)excel,但是dba跟我說(shuō)其中一個(gè)文件太大導(dǎo)致無(wú)法打開(三十多萬(wàn)行的數(shù)據(jù)),我嘗試了下,確實(shí)一打開就會(huì)提示文件已損壞, 如下:
從網(wǎng)上查了下excel單sheet完全是可以存儲(chǔ)一百多萬(wàn)的數(shù)據(jù),按理說(shuō)30多萬(wàn)的數(shù)據(jù)量不應(yīng)該影響文件的打開。由于無(wú)法直接將數(shù)據(jù)導(dǎo)出到excel文件給我(可能是使用的自帶導(dǎo)出工具無(wú)法支持這么大數(shù)據(jù)量的導(dǎo)出),DBA 提供了一個(gè)txt文件,并讓我自己使用Load File命令導(dǎo)入到本地?cái)?shù)據(jù)庫(kù)
嘗試了下導(dǎo)入,一開始我將文件存放在桌面上,執(zhí)行導(dǎo)入命令就會(huì)提示沒有權(quán)限
于是我將文件存儲(chǔ)位置改為D盤根目錄,權(quán)限是有了,但是會(huì)報(bào)如下錯(cuò)誤 :
感覺是文件的格式出了問題, 我看了下txt文件的內(nèi)容,我的load file命令的意思是以","為字段間的分隔符,"\n"為行分隔符, 字段內(nèi)容使用' " ' 雙引號(hào)括起來(lái),但是txt的文件的行分隔符明顯有問題,行分隔符和字段分隔符都使用了"\n", 這與dba說(shuō)的不符。
猜測(cè)是由于表有text類型字段,導(dǎo)致最后生成的file文件格式有點(diǎn)問題, 嘗試過將一行記錄的字段間的換行符去掉,再次執(zhí)行那一行就不會(huì)報(bào)錯(cuò)了,但明顯不可能手動(dòng)將所有的字段的分隔符修正掉。于是只能將生產(chǎn)環(huán)境的數(shù)據(jù)按照sql的方式導(dǎo)出并在本地?cái)?shù)據(jù)庫(kù)執(zhí)行
找dba提供了下表內(nèi)所有數(shù)據(jù)的insert sql, 選擇使用SQLyog 工具導(dǎo)入 操作如下: 數(shù)據(jù)庫(kù)–>導(dǎo)入–>執(zhí)行SQL腳本,然后選擇對(duì)應(yīng)的sql文件執(zhí)行即可
最后應(yīng)該只要導(dǎo)出即可
選擇 工具–>導(dǎo)出表中所有數(shù)據(jù)行/結(jié)果
但是導(dǎo)出的csv文件存在兩個(gè)問題,亂碼和格式不正確
亂碼應(yīng)該是由于文件編碼不一致造成的(雖然不明白為什么我指定了csv的文件格式為utf-8還會(huì)出現(xiàn)亂碼),我用記事本打開csv文件,選“另存為”,在下方保存按鈕旁邊的"編碼"框處選擇utf-8, 然后再打開就沒有亂碼了,但是文件的格式還是有問題,出現(xiàn)了很多奇怪的""和空行
最后我使用了MySQL Workbench來(lái)導(dǎo)入sql腳本數(shù)據(jù)再導(dǎo)出,得到最終正確的數(shù)據(jù)文件
Workbench 導(dǎo)入數(shù)據(jù) :
選擇 File --> Run SQL Script, 然后選擇db和對(duì)應(yīng)的字符集執(zhí)行,如下圖
數(shù)據(jù)導(dǎo)出 :
查詢出全表數(shù)據(jù)后 選擇 Query–> Export Results, 就可以得到導(dǎo)出的csv文件了,同樣該文件有亂碼的問題,按照上面的步驟重新設(shè)置下文件的編碼格式就可以了
終于成功將數(shù)據(jù)導(dǎo)出了(T_T)
總結(jié)
以上是生活随笔為你收集整理的记一次“曲折“的MySQL数据导出的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot返回前端Long型
- 下一篇: 执行maven clean packag