批量往mysql數據庫插入數據,mysql如何批量添加數據

本文目錄一覽:

mysql批量插入數據

不用INSERT INTO 難不成用UPDATE,數據導入3000條貌似不多吧

你要這麼一說,還真有點難度了,因為數據類型不一樣,還不能用數組,貌似沒有什麼絕竅

不過你可以直接用EXCEL中的CONCATENATE()函數把你的數據轉換成SQL輸入語句

然後把這個輸入語句腳本放到一個文件中,如Iinsert.sql

接着用類似下面的代碼把這個腳本導入MYSQL執行

  !$db-select_db(‘databasename’)exit($db-error());       //選擇當前數據庫

  if(!file_exists(“./insert.sql”))exit(“載入\”insert.sql\”失敗!”);

  $import_sql=file_get_contents(“pms.sql”,dirname(__FILE__));    //打開SQL文件並讀取

  $explode = explode(“;”,$import_sql);

  $cnt = count($explode);

  for($i=0;$i$cnt ;$i++){

    !$db-query($explode[$i])exit(“導入數據表失敗!”);

  }

  echo “已建立數據表…brbr\n”;

如何向mysql數據庫中導入大批量數據?

導入時把生成索引給關掉,應該能快一點.

不要一邊導入一邊建立索引.

8G數據,應該也不那麼慢了.

把sql語句文件讀取出一部分看看,建表語句中,應當有建立索引的部分,刪掉它!

只做建表和插入數據兩件事.

還有,看看數據庫有沒有外鍵?

盡量在插入數據過程中去掉外鍵關聯.

等數據插入完成之後再加索引和外鍵,應該能提高很多讀寫性能.

截取一部分數據,例如100Mb.

插入一下試試,可以預先對整體時間有一個預期.

還有,真的要弄台好點的電腦,或者去借一台,等把數據導入完成之後,把msyql的庫文件直接複製出來放自己機器上跑就好.

emm..

再追加點信息,要先搞明白,sql原文件里,到底都執行了哪幾類操作?

可能需要你用c之類寫點小工具,或者別的什麼語言,分塊讀取並處理文件.

8G..

嗯,還好.

現在內存都夠大,否則你都沒法直接用軟件打開了.

只有8G也可以直接用軟件打開看.

停掉索引真的可以大幅度加快插入數據的速度.

建議試一試!

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數據庫如何批量插入數據,如有表A 字段id name password email 如何插入大批量會員

1.首先在命令行控制台中打開mysql教程

或許命令的如下:

mysql

-u

root

-p

database_name

然後或許會提示輸入對應的密碼

2.下面這條命令或許對你有用,當你想更換一個數據庫教程的時候

mysqluse

database_name

然後使用下面這個命令

mysqlsource

d:datafilename.sql

當然你需要將文件所在的路徑搞清楚,並且正確地使用了他

進入mysql

安裝所在的目錄的子目錄bin.

輸入執行導入sql的命令.

例如:

你的mysql

安裝在

d:mysql

步驟如下:

開始

運行

輸入CMD

D:

cd

mysqlbin

mysql

-u

root

-p123456

test

評論

加載更多

如何把csv文件批量導入到mysql數據庫

通過命令行導入(要求列與列之間以 英文逗號 分割,若字段中含有 , 則以 ” 包裹)

load data infile ‘D:/mysql-5.7.29-winx64/files/ratings_5.csv’ into table ratings fields terminated by ‘,’ optionally enclosed by ‘”‘ escaped by ‘”‘ lines terminated by ‘\r\n’;

踩坑一:文件路徑用 \ 分割會報錯,用 / 可(用 \\ 應該也可)

踩坑二:load data 命令報錯

ERROR 1290 (HY000): The MySQL server is running with the –secure-file-priv option so it cannot execute this statement

在 my.ini 中加入(空字符串代表允許從一切目錄導入)

[mysqld]

secure-file-priv=”

然後再 Windows 的服務中重新啟動 mysql

踩坑三:csv 文件中第一行是諸如 userId 這樣的列名

如果你的 csv 文件不大,直接使用 notepad++ 打開後刪除第一行即可

但在我們這裡,千萬級別的文件 notepad++ 無法打開,這時可以考慮兩種方法

1. 將 csv 文件傳入 Linux 服務器刪去第一行

由於不知道如何在 Win 10 中做這個操作,只能通過 Linux 中轉執行

sed -i ‘1d’ ratings.csv

檢驗是否成功,可以打印出第一行觀察

cat ratings.csv | head -n 1

2. 通過工具把大的 csv 分成多個 notepad 能夠打開的較小文件,對第一個文件刪除第一行並依次導入

工具:splitcsv

親測 5000000 條數據的 csv 文件可以在 notepad++ 中打開(只能同時打開 3 個)

這個工具還有個小坑:ratings_0.csv 的最後一行和 ratings_1.csv 的第一行是重複的,請手動刪除

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/185758.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-26 21:07
下一篇 2024-11-26 21:07

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python讀取CSV數據畫散點圖

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

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

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

    編程 2025-04-29
  • Python 常用數據庫有哪些?

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

    編程 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將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

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

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

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

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

    編程 2025-04-29

發表回復

登錄後才能評論