亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

分析Mysql大量數據導入遇到的問題以及解決方案

2024-07-24 13:15:25
字體:
來源:轉載
供稿:網友

在項目中,經常會碰到往數據庫中導入大量數據,以便利用sql進行數據分析。在導入數據的過程中會碰到一些需要解決的問題,這里結合導入一個大約4G的txt數據的實踐,把碰到的問題以及解決方法展現出來,一方面自己做個總結記錄,另一方面希望對那些碰到相同問題的朋友有個參考。

我導入的數據是百科的txt文件,文件大小有4G多,數據有6500萬余條,每條數據通過換行符分隔。每條數據包含三個字段,字段之間通過Tab分隔。將數據取出來的方法我采用的是用一個TripleData類來存放這三個字段,字段都用String,然后將多條數據存到List<TripleData>中,再將List<TripleData>存入mysql數據庫,分批將所有數據存到mysql數據庫中。

以上是一個大概的思路,下面是具體導入過程中碰到的問題。

1 數據庫連接的亂碼及兼容問題。

數據中如果有中文的話,一定要把鏈接數據庫的url設置編碼的參數,url設置為如下的形式。

URL="jdbc:mysql://"+IP+":"+PORT+"/"+DB_NAME+"?useSSL=false&useUnicode=true&characterEncoding=utf-8";

把編碼設置為UTF-8是解決亂碼問題,設置useSSL是解決JDBC與mysql的兼容問題。如果不設置useSSL,會報錯。類似于

Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

這樣的錯誤信息。主要是mysql版本比較高,JDBC版本比較低,需要兼容。

2 utf8mb4編碼問題

在導入數據的過程中,還會碰到類似于

SQLException :Incorrect string value: '/xF0/xA1/x8B/xBE/xE5/xA2...' for column 'name'

這樣的錯誤信息,這是由于mysql中設置的utf-8是默認3個字節的,對于一般的數據是沒有問題的,如果是大的數據量,里面難免會包含一些微信表情,或者特殊字符,它們占了4個字節,utf-8不能處理,所以報錯。解決的辦法就是mysql在5.5.3以后的版本引入了4個字節的utf-8編碼,也就是utf8mb4,需要對mysql的編碼重新設置。

可以按照以下步驟進行操作,一是對要修改的數據庫進行備份,雖然utf8mb4是向下兼容utf8的,但為了以防操作不當,還是需要防患于未然,做好備份工作。二是要修改數據庫的字符集編碼為utf8mb4—UTF-8 Unicode,排序規則utf8mb4_general_ci。以上修改我是使用navicat進行修改的,如何用命令行修改,大家可以自行查找。三是要修改配置文件my.ini,在mysql安裝的根目錄下。加入以下設置。

[client]default-character-set = utf8mb4[mysqld]character-set-server=utf8mb4collation-server=utf8mb4_general_ci[mysql]default-character-set = utf8mb4

修改完成后,需要重新啟動mysql,使修改生效。

然后再進行數據的導入工作,應該就可以正常導入了。

 

3 大批量導入的時間效率問題

由于我們的數據量比較大,我們把數據進行了分割,我把6500萬條數據分為500個文件,每個文件大約11萬條數據,將這11萬條數據放到ArrayList<TripleObject>中,然后批量導入。大概的思路是采用“insert into tb (...) values(...),(...)...;”的方法,用insert一次性插入,這樣時間會節約很多時間。示例方法如下。

public static void insertSQL(String sql,List<TripleObject> tripleObjectList) throws SQLException{    Connection conn=null;    PreparedStatement psts=null;    try {      conn=DriverManager.getConnection(Common.URL, Common.DB_USERNAME, Common.DB_PASSWORD);      conn.setAutoCommit(false); // 設置手動提交       // 保存sql后綴      StringBuffer suffix = new StringBuffer();      int count = 0;       psts=conn.prepareStatement("");      String s="";      String p="";      String o="";      while (count<tripleObjectList.size()) {        s=tripleObjectList.get(count).getSubject().replaceAll(",", ".").replaceAll("//(", "").replaceAll("//)", "").replaceAll("/'", "").replaceAll("////", "");        p=tripleObjectList.get(count).getPredicate().replaceAll(",", ".").replaceAll("//(", "").replaceAll("//)", "").replaceAll("/'", "").replaceAll("////", "");        o=tripleObjectList.get(count).getObject().replaceAll(",", ".").replaceAll("//(", "").replaceAll("//)", "").replaceAll("/'", "").replaceAll("////", "");        suffix.append("('" +s +"','"+p+"','"+ o+"'),");        count++;      }      // 構建完整SQL      String allsql = sql + suffix.substring(0, suffix.length() - 1);      // 添加執行SQL      psts.addBatch(allsql);      psts.executeBatch(); // 執行批量處理       conn.commit(); // 提交     } catch (Exception e) {      e.printStackTrace();    }finally{      if(psts!=null){        psts.close();      }      if(conn!=null){        conn.close();      }    }  }

這種方法的優點是導入數據花費的時間會很少,6500萬條數據,用了正好1個小時。缺點是如果數據中有一大段的句子,需要對里面的逗號,括號,反斜線等進行處理,這里需要進行衡量,是否使用該方法。

如果正常插入,也就是使用“insert into tb (...) values(...);insert into tb (...) values(...);……”的形式,則不用處理特殊的符號,但花費的時間會很長,我測試了一下,11萬條數據大約需要12分鐘左右,導入6500萬條數據大概要100個小時。

我們采用的是第一種方法,數據大概可以查看就可以,對數據要求沒有那么嚴格,節約了時間。

以上是我在往mysql中導入大批量數據時碰到的問題,以及所想到的解決方法,如果大家有更好的解決方法,或者碰到其他的問題,希望一起討論。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久久久免费| 4p变态网欧美系列| 上原亚衣av一区二区三区| 亚洲欧洲在线看| 青青久久aⅴ北条麻妃| 51精品国产黑色丝袜高跟鞋| 一区二区三区 在线观看视| 欧美色视频日本版| 久久99亚洲热视| 欧美国产一区二区三区| 91精品视频在线免费观看| 亚洲国产精品成人va在线观看| 91免费版网站入口| 国产精品视频男人的天堂| 国产欧洲精品视频| 国产91热爆ts人妖在线| 欧美另类99xxxxx| 欧美亚洲伦理www| 亚洲高清色综合| 国产999精品视频| 久久精品国产亚洲7777| 91麻豆桃色免费看| 中文在线资源观看视频网站免费不卡| 中文字幕亚洲一区| 欧美老少做受xxxx高潮| 在线精品播放av| 国产精品久久久久久久久久小说| 国产aⅴ夜夜欢一区二区三区| 国产亚洲人成网站在线观看| 欧美在线观看网址综合| 91精品久久久久久久久久另类| 欧美日韩亚洲天堂| 国产精品极品美女在线观看免费| 欧美成人午夜剧场免费观看| 亚洲人成免费电影| 欧美插天视频在线播放| 国外视频精品毛片| 欧美亚洲一级片| 久久久久久久久电影| 久久综合伊人77777尤物| 亚洲第一精品夜夜躁人人爽| 日韩欧美成人精品| 国产成人97精品免费看片| 欧美高清电影在线看| 在线视频日韩精品| 久久久亚洲天堂| 欧美视频中文在线看| 久久夜色撩人精品| 91亚洲精品一区| 国产女人18毛片水18精品| 7777免费精品视频| 亚洲第一精品久久忘忧草社区| 日韩中文字幕不卡视频| 午夜精品国产精品大乳美女| 日韩av电影在线网| 国产亚洲a∨片在线观看| 在线精品国产欧美| 亚洲激情在线观看| 国产成人亚洲精品| 欧美黄色www| 久久综合免费视频影院| 欧美大尺度电影在线观看| 亚洲精品成人网| 97在线视频观看| 538国产精品视频一区二区| 777午夜精品福利在线观看| 亚洲美女www午夜| 亚洲国产精品热久久| 久久久久久亚洲| 国产91精品视频在线观看| 欧美巨猛xxxx猛交黑人97人| 成人激情视频在线播放| 国产一区红桃视频| 日韩美女在线观看| 亚洲成人亚洲激情| **欧美日韩vr在线| 韩国精品美女www爽爽爽视频| 欧美激情网站在线观看| 91精品国产精品| 日韩网站免费观看| 亚洲国产精品视频在线观看| 欧美日韩ab片| 91最新国产视频| 欧美另类69精品久久久久9999| 国产一区二区三区在线播放免费观看| 亚洲成av人乱码色午夜| 高清亚洲成在人网站天堂| 91精品国产综合久久香蕉| 51视频国产精品一区二区| 日韩欧美在线视频日韩欧美在线视频| 色综合久久久久久中文网| 色综合导航网站| 精品综合久久久久久97| 亚洲日韩中文字幕在线播放| 国产精品视频永久免费播放| 久久久久久久久爱| 中文字幕国产精品久久| 性色av一区二区三区红粉影视| 亚洲男子天堂网| 久久久久日韩精品久久久男男| 日本韩国在线不卡| 精品在线欧美视频| 欧美第一黄网免费网站| 欧美激情a在线| 久久99国产精品自在自在app| 欧美日韩第一页| 欧美色欧美亚洲高清在线视频| 最近2019中文字幕在线高清| 欧美一级视频免费在线观看| 精品国产一区av| 亚洲欧美在线播放| 国产99视频在线观看| 青青精品视频播放| 久久久噜噜噜久久中文字免| 日韩中文字幕不卡视频| 午夜精品久久久久久久久久久久久| 欧美在线视频观看| 91精品啪aⅴ在线观看国产| 日韩高清人体午夜| 九九热这里只有精品6| 国产精品久久久久久久久久新婚| 性色av一区二区三区| 日韩视频免费观看| 久久视频国产精品免费视频在线| 精品偷拍一区二区三区在线看| 久久免费成人精品视频| 国内精品久久久久久影视8| 欧美性生交xxxxx久久久| 国产成人在线一区| 精品二区三区线观看| 国产日韩在线看| www.日韩不卡电影av| 伊人男人综合视频网| 亚洲已满18点击进入在线看片| 亚洲成人av资源网| 国产亚洲欧洲高清一区| 欧美日韩国产中字| 国产精品久久久av久久久| 久久久噜久噜久久综合| 久久久久久久久久久91| 欧美疯狂xxxx大交乱88av| 久久久精品免费| 日韩欧美亚洲范冰冰与中字| 国产精品中文在线| 日韩电影在线观看免费| 国产欧美日韩中文字幕在线| 中文字幕日韩在线视频| 成人h视频在线| 欧美成人免费视频| 色狠狠av一区二区三区香蕉蜜桃| 午夜精品久久久久久久白皮肤| 亚洲国产日韩一区| 亚洲理论在线a中文字幕| 中文一区二区视频| 国产精品黄色影片导航在线观看| 亚洲欧美制服中文字幕| 亚洲欧美色图片| 亚洲色图欧美制服丝袜另类第一页| 日韩午夜在线视频| 亚洲已满18点击进入在线看片| 色哟哟入口国产精品| 欧美精品一区二区三区国产精品| 欧美猛交ⅹxxx乱大交视频| 一道本无吗dⅴd在线播放一区|