將csv文件導入MySQL中


創建數據表
導入CSV格式文件,首先保證表存在
CREATE TABLE `nizong_1e_data`  (
  `user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `age` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  INDEX `phone`(`user_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
上傳數據文件
查看數據庫安全導入目錄,將數據文件上傳至安全目錄
mysql> show variables like '%secure_file_priv%';       
+------------------+-----------------------+
| Variable_name    | Value                 |
+------------------+-----------------------+
| secure_file_priv | /tmp/ |
+------------------+-----------------------+
1 row in set (0.00 sec)
查看數據庫字符集
mysql> show variables like 'character_set_database';
+------------------------+---------+
| Variable_name          | Value   |
+------------------------+---------+
| character_set_database | utf8mb4 |
+------------------------+---------+
1 row in set (0.00 sec)
將csv文件傳入安全目錄下然后再進行導入操作
 
導入數據
load data infile '/tmp/5KW_PIR.csv'
into table nizong_5kw_data character set utf8mb4
fields terminated by ',' optionally enclosed by '"' escaped by '"'
lines terminated by '\r\n';
問題列表
1、現象:執行命令后,查看數據表僅有一行數據
定位:檢查第一行數據是否與真實數據完全匹配,第一行最后列字段是否錄入了第二行數據
方法:行分隔符使用錯誤,比如hive導出的csv的行分隔符為\n
 
如果建表的時候加入索引,導入數據過大就會導致插入時間過長
加索引
第一個千萬 耗時兩個半小時
第二個千萬 耗時八個小時四十分鍾
第三個千萬 耗時十六個小時+
無索引
五千萬 耗時七分鍾
一億 三個半小時
千萬級以上的數據導入時建議不要加索引
 
創建無索引的表
CREATE TABLE `400w_nizong_data`  (
  `user_id` varchar(255) ,
  `age` varchar(255) 
 
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
導入數據后添加索引
alter table nizong_1e_data add index idx_user_id(user_id);

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM