本文目錄一覽:
shell 怎麼造mysql 的大量數據
若要將大量的數據值插入到數據庫的一個或多個表中,使用insert into語句來實現將是一項無聊的工作。
1、LOAD DATA通過讀取本地文件系統上的文件,可以將大量數據添加到數據庫中。
mysql LOAD DATA INFILE ‘datafile.txt’ INTO TABLE db2.table_name;
mysql LOAD DATA INFILE ‘datafile.txt’ INTO TABLE db2.table_name FIELDS TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘”‘;
mysql load data infile “file.txt” into table table_name fields terminated by ‘\t’ (sid,name);
2、還有一個mysqlimport命令可以批量增加,mysqlimport直接從文件讀取批量數據。它相當於LOAD DATA語句的一個接口。
mysqlimport可以自動生成一個LOAD DATA語句,該語句把filename.txt文件中的數據裝入table_name表中。
mysqlimport根據文件名導入表名,即將文件名第一個圓點前的所有字符作為表名。例如,文件class.txt被裝入class表中。
例如:
mysqlimport -L -uroot -proot db01 table_name.txt;
mysqlimport -local table_name filename.txt;
3、datafile.txt內容:
“1”,”a string”,”100.20″
“2”,”a string containing a , comma”,”102.20″
“3”,”a string containing a \” quote”,”102.20″
“4”,”a string containing a \”, quote and comma”,”102.20″
4、假如你有x表,導入了一個y表,將y表數據插入x表:
insert into x select * from y;
如何向mysql數據庫中導入大批量數據?
導入時把生成索引給關掉,應該能快一點.
不要一邊導入一邊建立索引.
8G數據,應該也不那麼慢了.
把sql語句文件讀取出一部分看看,建表語句中,應當有建立索引的部分,刪掉它!
只做建表和插入數據兩件事.
還有,看看數據庫有沒有外鍵?
盡量在插入數據過程中去掉外鍵關聯.
等數據插入完成之後再加索引和外鍵,應該能提高很多讀寫性能.
截取一部分數據,例如100Mb.
插入一下試試,可以預先對整體時間有一個預期.
還有,真的要弄台好點的電腦,或者去借一台,等把數據導入完成之後,把msyql的庫文件直接複製出來放自己機器上跑就好.
emm..
再追加點信息,要先搞明白,sql原文件里,到底都執行了哪幾類操作?
可能需要你用c之類寫點小工具,或者別的什麼語言,分塊讀取並處理文件.
8G..
嗯,還好.
現在內存都夠大,否則你都沒法直接用軟件打開了.
只有8G也可以直接用軟件打開看.
停掉索引真的可以大幅度加快插入數據的速度.
建議試一試!
MySQL數據庫 寫入大量數據如何實現
//最快的方法 10000記錄 23MS
public static void insert() {
// 開時時間
Long begin = new Date().getTime();
// sql前綴
String prefix = “INSERT INTO tb_big_data (count, create_time, random) VALUES “;
try {
// 保存sql後綴
StringBuffer suffix = new StringBuffer();
// 設置事務為非自動提交
conn.setAutoCommit(false);
// Statement st = conn.createStatement();
// 比起st,pst會更好些
PreparedStatement pst = conn.prepareStatement(“”);
// 外層循環,總提交事務次數
for (int i = 1; i = 100; i++) {
// 第次提交步長
for (int j = 1; j = 10000; j++) {
// 構建sql後綴
suffix.append(“(” + j * i + “, SYSDATE(), ” + i * j
* Math.random() + “),”);
}
// 構建完整sql
String sql = prefix + suffix.substring(0, suffix.length() – 1);
// 添加執行sql
pst.addBatch(sql);
// 執行操作
pst.executeBatch();
// 提交事務
conn.commit();
// 清空上一次添加的數據
suffix = new StringBuffer();
}
// 頭等連接
pst.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
// 結束時間
Long end = new Date().getTime();
// 耗時
System.out.println(“cast : ” + (end – begin) / 1000 + ” ms”);
}
原創文章,作者:ZBIO,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/131119.html