本文目錄一覽:
- 1、mysql怎麼快速插入大量數據
- 2、使用JDBC在MySQL資料庫中如何快速批量插入
- 3、MySQL如何快速插入大量數據
- 4、mysql資料庫中怎麼批量插入數據
- 5、MYSQL批量插入資料庫實現語句性能分析
- 6、mysql批量插入數據怎麼寫sql語句呢?
mysql怎麼快速插入大量數據
通過導入文件的方式插入,文件可以用其他方式先生成,比如使用java,來生成data1.txt,然後使用下面的sql語句:
load data local infile ‘d:/data1.txt’ replace into table hk_acinfo lines terminated by ‘\\r\\n’
使用這個方法,我插入過1千萬以上的數據,如果沒有網路影響的話,每秒1M+/s的速度寫入,很快的
使用JDBC在MySQL資料庫中如何快速批量插入
可以使用jdbc預編譯+批量更新,這樣的執行效率最高。
具體是這樣使用的:
循環2000條數據例如數據被裝到了一個名叫dataList的ListMapString,String中,那麼批量更新就是這樣執行的
Map map = null;
String data1= “”;
String data2 = “”;
String sql = insert into biao values(?,?);
PreparedStatement preStmt = conn.prepareStatement(sql);
for(i = 0;idataList.size();i++){
map = dataList.get(i);
data1=map.get(“data1”);
data2 = map.get(“data2”);
preStmt.setString(1,data1);
preStmt.setString(2, data2);
preStmt.addBatch();
}
preStmt.executeBatch();
preStmt.clearBatch();
MySQL如何快速插入大量數據
通過導入文件的方式插入,文件可以用其他方式先生成,比如使用java,來生成data1.txt,然後使用下面的sql語句:
load data local infile ‘d:/data1.txt’ replace into table hk_acinfo lines terminated by ‘\\r\\n’
使用這個方法,我插入過1千萬以上的數據,如果沒有網路影響的話,每秒1M+/s的速度寫入,很快的
mysql資料庫中怎麼批量插入數據
常見的insert語句,向資料庫中,一條語句只能插入一條數據:
insert into persons
(id_p, lastname , firstName, city )
values(204,’haha’ , ‘deng’ , ‘shenzhen’);
(如上,僅插入了一條記錄)
怎樣一次insert插入多條記錄呢?
使用示例:
insert into persons
(id_p, lastname , firstName, city )
values
(200,’haha’ , ‘deng’ , ‘shenzhen’),
(201,’haha2′ , ‘deng’ , ‘GD’),
(202,’haha3′ , ‘deng’ , ‘Beijing’);
這樣就批量插入數據了, 遵循這樣的語法,就可以批量插入數據了。
執行成功,截圖:
據說,在程序開發中,一次插入多條數據,比逐次一條一條的插入數據,效率高很多
所以在程序開發的時候,使用此批量插入,也是比較不錯的。
此語句在MySQL 5, postgreSQL 9.3執行通過。
MYSQL批量插入資料庫實現語句性能分析
假定我們的表結構如下
代碼如下
CREATE
TABLE
example
(
example_id
INT
NOT
NULL,
name
VARCHAR(
50
)
NOT
NULL,
value
VARCHAR(
50
)
NOT
NULL,
other_value
VARCHAR(
50
)
NOT
NULL
)
通常情況下單條插入的sql語句我們會這麼寫:
代碼如下
INSERT
INTO
example
(example_id,
name,
value,
other_value)
VALUES
(100,
‘Name
1′,
‘Value
1′,
‘Other
1′);
mysql允許我們在一條sql語句中批量插入數據,如下sql語句:
代碼如下
INSERT
INTO
example
(example_id,
name,
value,
other_value)
VALUES
(100,
‘Name
1′,
‘Value
1′,
‘Other
1′),
(101,
‘Name
2′,
‘Value
2′,
‘Other
2′),
(102,
‘Name
3′,
‘Value
3′,
‘Other
3′),
(103,
‘Name
4′,
‘Value
4′,
‘Other
4′);
如果我們插入列的順序和表中列的順序一致的話,還可以省去列名的定義,如下sql
代碼如下
INSERT
INTO
example
VALUES
(100,
‘Name
1′,
‘Value
1′,
‘Other
1′),
(101,
‘Name
2′,
‘Value
2′,
‘Other
2′),
(102,
‘Name
3′,
‘Value
3′,
‘Other
3′),
(103,
‘Name
4′,
‘Value
4′,
‘Other
4′);
上面看上去沒什麼問題,下面我來使用sql語句優化的小技巧,下面會分別進行測試,目標是插入一個空的數據表200W條數據
第一種方法:使用insert
into
插入,代碼如下:
代碼如下
$params
=
array(‘value’=’50’);
set_time_limit(0);
echo
date(“H:i:s”);
for($i=0;$i2000000;$i++){
$connect_mysql-insert($params);
};
echo
date(“H:i:s”);
最後顯示為:23:25:05
01:32:05
也就是花了2個小時多!
第二種方法:使用事務提交,批量插入資料庫(每隔10W條提交下)最後顯示消耗的時間為:22:56:13
23:04:00
,一共8分13秒
,代碼如下:
代碼如下
echo
date(“H:i:s”);
$connect_mysql-query(‘BEGIN’);
$params
=
array(‘value’=’50’);
for($i=0;$i2000000;$i++){
$connect_mysql-insert($params);
if($i%100000==0){
$connect_mysql-query(‘COMMIT’);
$connect_mysql-query(‘BEGIN’);
}
}
$connect_mysql-query(‘COMMIT’);
echo
date(“H:i:s”);
第三種方法:使用優化SQL語句:將SQL語句進行拼接,使用
insert
into
table
()
values
(),(),(),()然後再一次性插入,如果字元串太長,
則需要配置下MYSQL,在mysql
命令行中運行
:set
global
max_allowed_packet
=
2*1024*1024*10;消耗時間為:11:24:06
11:25:06;
插入200W條測試數據僅僅用了1分鐘!代碼如下:
代碼如下
$sql=
“insert
into
twenty_million
(value)
values”;
for($i=0;$i2000000;$i++){
$sql.=”(’50’),”;
};
$sql
=
substr($sql,0,strlen($sql)-1);
$connect_mysql-query($sql);
最後總結下,在插入大批量數據時,第一種方法無疑是最差勁的,而第二種方法在實際應用中就比較廣泛,第三種方法在插入測試數據或者其他低要求時比較合適,速度確實快。
mysql批量插入數據怎麼寫sql語句呢?
如果就一個name欄位並且ID是自增的話就這樣
INSERT INTO tablename VALUES(‘name1′,’name2′,’name3′,’name4’)
否則就這樣
INSERT INTO tablename VALUES((‘1′,’name1’),(‘3′,’name2’),(‘2′,’name3’),(‘8′,’name4’))
當然也可以這樣寫,上面的是簡化的
INSERT INTO tablename (name)VALUES (‘name1′,’name2′,’name3′,’name4’)
INSERT INTO tablename (id,name) VALUES ((‘1′,’name1’),(‘3′,’name2’),(‘2′,’name3’),(‘8′,’name4’))
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/183588.html