日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql文档批处理去重_数据导入经验总结

發布時間:2024/1/23 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql文档批处理去重_数据导入经验总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、導入mysql數據前期設置

1.建庫和表統一編碼設置為UTF8,根據數據中的編碼來修改(也可以將數據全部轉換為utf-8格式,小文件可用notepad來修改編碼,大文件可用?LogViewPro 來修改編碼)

2.對MySql數據庫進行優化配置

my.ini優化配置:

[mysql]default-character-set=utf8

[mysqld]

port=3306basedir=F:/phpstudy_pro/Extensions/MySQL5.7.26/datadir=F:/phpstudy_pro/Extensions/MySQL5.7.26/data/character-set-server=utf8 #默認的數據庫編碼default-storage-engine=MyIsam #數據庫引擎,myisam適合于查詢

max_connections=1000#客戶端和服務器最大連接數,默認為1000

collation-server=utf8_unicode_ci

init_connect='SET NAMES utf8'innodb_buffer_pool_size=4096M #一般設置 buffer pool 大小為總內存的 3/4 至 4/5innodb_flush_log_at_trx_commit=2#當設置為2,該模式速度較快,也比0安全,只有在操作系統崩潰或者系統斷電的情況下,上一秒鐘所有事務數據才可能丟失。

innodb_lock_wait_timeout=120#默認參數:innodb_lock_wait_timeout設置鎖等待的時間是120s,一旦數據庫鎖超過這個時間就會報錯。

innodb_log_buffer_size=16M #建議取值16M-64MB,自己內存為8G

innodb_log_file_size=256M #一般取256M可以兼顧性能和recovery的速度,不可取大也不可取小

interactive_timeout=120#服務器關閉交互式連接前等待活動的秒數

join_buffer_size=16M #聯合查詢操作所能使用的緩沖區大小,如果有100個線程連接,則占用為16M*100key_buffer_size=512M #索引緩沖區,一般情況下對于內存在 4GB 左右的服務器該參數可設置為256M 或384M

log_error_verbosity=2#錯誤日志記錄內容

max_allowed_packet=128M #限制Server接受的數據包大小,默認是128M

max_heap_table_size=64M #設置默認值

myisam_max_sort_file_size=64G ## mysql重建索引時允許使用的臨時文件最大大小,默認值即可

myisam_sort_buffer_size=150M #MyISAM表發生變化時重新排序所需的緩沖

read_buffer_size=512kb #緩存連續掃描的塊,這個緩存是跨存儲引擎的,不只是MyISAM表,8G內存,建議是512KB

read_rnd_buffer_size=4M #MySql的隨機讀緩沖區大小建議末日使者

server_id=1skip-external-locking=on #跳過外部鎖定

sort_buffer_size=256kb #排序緩沖

table_open_cache=3000thread_cache_size=16tmp_table_size=64M

wait_timeout=120secure-file-priv=''#可在任意目錄下導入

log-error="F:/phpstudy_pro/Extensions/MySQL5.7.26/data"[client]

port=3306

default-character-set=utf8

二、各種數據導入mysql方法

導入的數據類型有:.sql數據,txt文本數據,cvs(xls)數據,以及access和mssql數據格式的數據

1.txt文本格式數據導入

(1).txt體積不超過400M,超過的一律進行將其分割等分

(2)、合并txt文件,針對多個小文件的txt

合并txt文件的命令:

type *.txt > all.txt(windows)

cat * > 1.txt(linux)

(3)、txt文件(使用tab間隔分割,回車換行)命令快速導入方式:

mysql -u root -p

use test;

load data infile'J:/data/weibo/weibo/weibo_1.txt' into table weibo_info1 FIELDS TERMINATED BY '\t' lines terminated by '\r\n' (tel,uid);

注意:這里導入的txt文件路徑為相對物理路徑,\t表示字段之間的分割符號為tab(空格),\r\n表示在windows系統下的數據的每行的換行符號

(4)、txt文件(使用----間隔分割,回車換行)命令快速導入方式:

load data infile 'E:/test.txt' into table test FIELDS TERMINATED BY '----' lines terminated by '\r\n' (tel,qq);

(5)、txt文件(使用,字符間隔分割,回車換行)命令快速導入方式:

load data infile 'E:/test.txt' into table test FIELDS TERMINATED BY ',' lines terminated by '\r\n' (tel,qq);

(6)、txt文本字段中含有雙引號字符的字段,會導致意外終止,這里使用enclosed by命令來去掉雙引號

load data infile 'E:/test.txt' into table test FIELDS TERMINATED BY ',' enclosed by '"' lines terminated by '\r\n' (tel,qq);

(7)load data infile導入參數說明

fields terminated by ','#表示字段數據之間用逗號分隔。

fields terminated by'\n'#表示每行數據之間的分隔符為換行符號(linux)

lines terminated by'\r\n'#表示每行數據之間的分隔符為換行符號(windows)

escaped by''#表示對字段值中含有轉義字符的\進行刪除

enclosed by'"'#表示去掉字段值中的雙引號

(tel,qq) #表對應的字段名稱,這個需要和test.txt文件里面的數據字段名稱對應

(8)、小txt文件(非tab的規律間隔符),可以使用操作簡單的Navicat導入數據

需要注意分割符合以及目標欄目中的數據對應導入的數據字段

(9)導入多個txt文件到mysql

想要批量導入txt文件,可以將通過批處理文件執行多條導入語句完成。

制作sql語句文件,可采用多種編程語言獲取要導入的txt文件名稱制成sql命令。

這里采用python完成,建立python文件create_sql.py,示例代碼:(下面數據格式為----為間隔的數據)

import glob

writeFile= open('C:/Users/backlion/Desktop/data/user_sql.txt','w')

writeFile.write('use test;\n')for filename in glob.glob(r'C:/Users/backlion/Desktop/data/*.txt'):

writeFile.write('load data local infile'+'"'+filename.replace('\\','/')+'"'+'into table user fields terminated by' + '"' + '----' + '"' + 'lines terminated by' + '"' + r'\r\n' + '"' + ';\n')

writeFile.close()

這樣就將data文件夾下的所有要導入的txt文件名稱制作成sql語句放在user_sql.txt中,內容大致如下:

創建數據庫為test,表名為user,字段名稱為email和password。

制作.bat批處理文件執行(1)生成的sql命令文件

D:\phpStudy\PHPTutorial\MySQL\bin\mysql.exe --local-infile -u root –proot < C:/Users/backlion/Desktop/data/user_sql.txt

pause

2、csv文件導入到mysql

(1).單個cvs導入mysql,快速命令

mysql -u root -p

use test;

load data local infile"C:/Users/backlion/Desktop/data/use1.csv" into table user fields terminated by"," lines terminated by"\r\n" (email,password);

(2)、多個cvs批量導入到mysql

想要批量導入txt文件,可以將通過批處理文件執行多條導入語句完成。

csv文件以','逗號作為分割符,需要用雙引號或者單引號括起來.

制作sql語句文件,可采用多種編程語言獲取要導入的txt文件名稱制成sql命令。

這里采用python完成,建立python文件create_sql.py,示例代碼:(下面數據格式csv文件)

import glob

writeFile= open('C:/Users/backlion/Desktop/data/user_sql.txt','w')

writeFile.write('use test;\n')for filename in glob.glob(r'C:/Users/backlion/Desktop/data/*.csv'):

writeFile.write('load data local infile'+'"'+filename.replace('\\','/')+'"'+'into table user fields terminated by' + '"' + ',' + '"' + 'lines terminated by' + '"' + r'\r\n' + '"' + ';\n')

writeFile.close()

這樣就將data文件夾下的所有要導入的txt文件名稱制作成sql語句放在user_sql.txt中,內容大致如下:

創建數據庫為test,表名為user,字段名稱為email和password

制作.bat批處理文件執行(1)生成的sql命令文件

D:\phpStudy\PHPTutorial\MySQL\bin\mysql.exe --local-infile -u root –proot < C:/Users/backlion/Desktop/data/user_sql.txt

pause

(3)多個csv文件合并

copy *.CSV all.csv

(3)、通過navicat導入cvs格式文件

2.sql格式導入mysql

(1)、單個sql格式的文件導入,不用考慮編碼問題,入庫后直接使用navicat編輯數據庫屬性轉UTF8編碼即可,然后再創建索引

使用命令:

mysql -u root -p

use test;

source D:\test.sql;

(2)、批量導入多個sql文件新建一個all.sql:vim all.sql

在里面寫入:

source 1.sql

source2.sql

......

source53.sql

source54.sql

然后執行:

mysql> source all.sql

(3)、多個sql文件合并

copy *.sql all.sql

(4)、通過navicat導入sql格式文件

三、導入技巧

1.統計MYSQL數據重復數量

mysql>select email, count(email) as count fromuser group by email having

mysql>count(email) > 1;

或者

SELECT * FROM user WHERE email IN (SELECT email FROM user GROUP BY email HAVING COUNT(email ) > 1);

2、數據去重

mysql> CREATE TABLE tmp SELECT email,password FROM user GROUP BY email,password ;

或者

mysql>CREATE TABLE tmp SELECT email FROM user GROUP BY email;

mysql>DROP TABLE user;

mysql> ALTER TABLE tmp RENAME TO user;

或者

1)選擇已選擇的字段或者主鍵值重復項中的記錄

create table new as (select? email,password? from user group by email,password? having count(*)>1);

2)創建索引(僅需在第一次時執行)

create index email? on new(email) ;

3)刪除重復項中字段或者主鍵值的記錄

delete from user where email? in (select email? from new);

4)刪除臨時表

drop table new;

3、添加索引,并查詢優化

給常用查詢字段添加索引,模糊類用BTREE存儲類型,精確類用HASH存儲類型。推薦使用Navicat 選擇表打開表訊息,選擇DDL選項卡,可以清楚看到該表的sql,有無索引一目了然,然后右擊數據庫名選擇它的console功能,來快速添加索引。

4、導入特殊字符如表情或者每字符四個字節支持補充字符,可將數據庫和表的字符集設為utf8mb4

5、xls和cvs等excle格式的文件,建議直接使用navicat編輯數據庫屬性轉UTF8編碼即可,然后再創建索引

6、先通過navicat創建數據庫和表和字段等數據庫結構后,然后創建索引,最后導入數據(這個是針對數據量很大的數據,如果先導入很大的數據,最后再來創建索引,會直接卡死,并且卡很久)

7.mssql導入到mysql數據庫中,通過navicat的導入功能中的mssql數據庫源導入

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的mysql文档批处理去重_数据导入经验总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。