csv导入mysql_mysql导入超大csv指南
mysql導入超大csv指南
需求描述
手頭下載了一個比較大(400Mb+)的語料數據,需要從里面提取出某兩種語言的句子對,因為數據特別大,且csv并非標準以逗號分隔而是以tab分隔,嘗試用Navicat的導入向導導入失敗。
另外以后也可能會有處理超大csv的場景,mark一下方法備用。
失敗方法
一開始打算直接用Navicat進行導入,嘗試了一下輸入向導。這里一個坑點:如果你選擇csv格式,字段分隔符是不可選的,如下圖。
這時候可以在上一步就選擇文本txt,然后就可以自定義分隔符了,如下圖。
雖然但是這里也沒有tab(\t)的選項,其他那里莫名其妙只能輸入一個字符,所以也輸入不了\t,嘗試直接下一步會一直卡住,雖然沒有顯示無響應但是一直在處理中,等了半個小時也不管用,所以這個方法不行。
正確食用方法
實驗環境:mysql 8.0 @ win10
使用Navicat進行操作
實際上mysql是可以直接讀csv文件來進行導入的,方法也超級簡單。
首先需要放開允許本地導入文件
SET GLOBAL local_infile = 'ON';看到下面執行結果為OK就可以了,然后進行導入。
LOAD DATA LOCAL INFILE 'PATH_TO_CSV_FILE' INTO TABLE TABLE_NAME FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'(FIELD1, FIELD2, ...);填入csv的路徑和表名,然后TERMINATED BY就是分隔符,后面LINE TERMINATED BY是每行結束的標志,一般來說是換行符\n,后面field就是數據庫中指定的字段。運行以后,需要等待一段時間,這個時間取決于數據庫io速度了。我這里做了一次清空表再做導入,可能IO比較忙,用了快三分鐘,第一次導入的時候只用了78秒,速度還是蠻快的。另外這里也可以看到數據量蠻大的,一共800w+條。
其他處理超大csv的經驗
如果需要打開一個超大的csv,千萬不要用記事本(Notepad)打開,百分百卡死。
如果只需要進行文本編輯,可以使用vscode,打開很快,保存也比較快,但不方便進行簡單編輯以外其他操作。其次使用pycharm自帶的文本編輯器也能夠比較快地打開超大的csv。也有推薦說用UltraEdit之類的打開的,因為vscode現有,不再測試。
可以使用Excel的從csv導入的功能(在數據-從文本/csv),另外也可以選擇文件編碼(如utf-8)和分隔符,他也能夠自動檢測(不太好用)。預覽一下沒問題點加載即可。但是excel有行數限制(大概),反正這份超大的語料我就無法加載。
另外如果使用excel直接打開utf-8編碼的csv會出現亂碼,因為win的默認編碼是gbk(目前可以把win的全局編碼設置成utf-8,該設置在地區與語言里,但是開啟后不支持utf-8編碼的軟件可能會出現文件夾亂碼、軟件界面亂碼等奇怪的情況,還是不能開啟)。同時也無法識別逗號以外分隔符的csv。因此必須用導入的方法打開。
總結
以上是生活随笔為你收集整理的csv导入mysql_mysql导入超大csv指南的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: des和aes相比较有哪些特点_栓流气力
- 下一篇: 项目的启动顺序_多个项目进行如何做好进度