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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-25 05:47
下一篇 2024-11-25 05:48

相關推薦

  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Ojlat:一款快速開發Web應用程序的框架

    Ojlat是一款用於快速開發Web應用程序的框架。它的主要特點是高效、易用、可擴展且功能齊全。通過Ojlat,開發人員可以輕鬆地構建出高質量的Web應用程序。本文將從多個方面對Oj…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • openeuler安裝資料庫方案

    本文將介紹在openeuler操作系統中安裝資料庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟體源 sudo…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python爬取公交數據

    本文將從以下幾個方面詳細闡述python爬取公交數據的方法: 一、準備工作 1、安裝相關庫 import requests from bs4 import BeautifulSou…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29
  • Python數據標準差標準化

    本文將為大家詳細講述Python中的數據標準差標準化,以及涉及到的相關知識。 一、什麼是數據標準差標準化 數據標準差標準化是數據處理中的一種方法,通過對數據進行標準差標準化可以將不…

    編程 2025-04-29

發表回復

登錄後才能評論