国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

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

2024-07-24 12:50:40
字體:
來源:轉載
供稿:網友

在項目中,經常會碰到往數據庫中導入大量數據,以便利用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安裝的根目錄下。加入以下設置。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平陆县| 南昌县| 泾阳县| 兴文县| 和龙市| 永善县| 南平市| 滕州市| 惠东县| 肥东县| 威信县| 宁强县| 杂多县| 北川| 延川县| 安泽县| 孟州市| 娄底市| 巴彦县| 曲阳县| 马龙县| 益阳市| 肇东市| 共和县| 金山区| 徐州市| 和田县| 大田县| 田阳县| 阿图什市| 射洪县| 和田市| 汕头市| 铜梁县| 永川市| 宜兰县| 蚌埠市| 隆回县| 湟源县| 永州市| 德化县|