當前位置:首頁 » 數據倉庫 » 批量存入資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

批量存入資料庫

發布時間: 2022-11-16 22:35:36

❶ 如何將批量的數據存入sql資料庫

在一些數據量比較大,而且操作資料庫頻繁的。此時需要將數據表datatable整塊的存入資料庫中。
不多說,直接上代碼:
首先得新建一個資料庫
DataTable
once_rec_date
=
new
DataTable();
這個資料庫得跟目標資料庫的列的位置和大小都得一樣。特別是類型,和位置。
就是列的位置和目標資料庫的位置,順序得
一模一樣。因為都是塊存儲,所以地址什麼的都得一樣,千萬不能少一列,自增列可以空在那邊。
在初始化中初始化該表
once_rec_date.Columns.Add("id", typeof(int));
once_rec_date.Columns.Add("RevData_cmd", typeof(int));
once_rec_date.Columns.Add("Node", typeof(int));
once_rec_date.Columns.Add("Data", typeof(String));
once_rec_date.Columns.Add("Ssingle", typeof(int));
once_rec_date.Columns.Add("IsWiressData", typeof(int));
once_rec_date.Columns.Add("Datatime", typeof(DateTime));
once_rec_date.Columns.Add("Receivetime", typeof(DateTime));
once_rec_date.Columns.Add("IsMatch", typeof(int));

❷ 怎麼高效率批量插入1000條數據到資料庫

常見的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');
這樣就批量插入數據了, 遵循這樣的語法,就可以批量插入數據了。

❸ 如何用SQL語句將數據批量插入資料庫

這種情況使用xml來進行批量插入.
1.asp.net頁面上抓取數據,轉換成xml字元串
2.將這個字元串作為參數傳給存儲過程
3.存儲過程里,將這個xml讀取成臨時表
4.整個臨時表插入到目標數據表中,這個過程可以使用sql
server的事務;其實在這里用不用事務問題都不大了,因為存儲過程出錯,數據插不進去的,還會拋出異常到asp.net後台,讓後台進行處理異常.
您用游標或asp.net代碼來循環,速度會比較慢的.

❹ 解析txt文件,將文件中明細批量插入mysql資料庫表中,怎麼做

批量寫入,提高效率,最簡單直接的辦法就是:

txt文本
作為一個數據源處理,而不是文件讀取,這樣,通過數據源,就可以直接批量讀取為一個recordset,然後,直接寫入資料庫了。
ps:這要求
文本文件格式
非常規律,如果不行,自己嘗試在內存裡面構建recordset吧。

❺ 如何在資料庫中批量插入數據

可以使用oracle sql loader批量導入數據:
生成測試數據的EXCEL文件,把EXCEL文件另存為CSV(逗號分隔)(*.csv),控制文件設置為用逗號分隔。
示例:
LOAD DATA
INFILE 『d:\car.csv』
APPEND INTO TABLE t_car_temp
FIELDS TERMINATED BY ","
(phoneno,vip_car)
保存為input.ctl
最後在命令行下輸入:
C:\>sqlldr userid=system/manager
control=input.ctl(在unix環境下亦同)
默認日誌文件名為:input.log
默認壞記錄文件為:input.bad

❻ 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;$i<2000000;$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;$i<2000000;$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;$i<2000000;$i++){
$sql.="('50'),";
};
$sql
=
substr($sql,0,strlen($sql)-1);
$connect_mysql->query($sql);
最後總結下,在插入大批量數據時,第一種方法無疑是最差勁的,而第二種方法在實際應用中就比較廣泛,第三種方法在插入測試數據或者其他低要求時比較合適,速度確實快。

❼ 如何批量導入數據到Sqlite資料庫

具體的操作步驟如下:
首先,用Access打開mdb文件。導出成txt文件,由於本人的SQLite是在linux下使用,所以編碼要改成Unicode,分隔符用逗號分割(逗號分割是為了後期導入到SQLite中)
第二步,將文件導入到linux系統下通過終端sqlite3abc.db
SQLiteversion3.6.22
Enter".help"forinstructions
";"sqlite
進入一個已經建好的資料庫中
sqliteCREATETABLEeee(idINTEGERPRIMARYKEY,
numberNUMERIC,codeNUMERIC,cityTEXT,citytypeTEXT);
創建一個表,這個表的欄位和數據類型要和txt文件中的數據和數據類型相對應。
sqlite.separator","//設置分割符為逗號,和之前導出設置的分隔符保持一致
sqlite.importlist.txteee//將list.txt上的內容導入到表eee中
到此,已成功地將批量數據插入到SQLite中了。

❽ 資料庫如何批量插入數據

解決方法:
添加事務處理,把5000條插入作為一個事務
dataBase.beginTransaction(); //手動設置開始事務
//數據插入操作循環
dataBase.setTransactionSuccessful(); //設置事務處理成功,不設置會自動回滾不提交
dataBase.endTransaction(); //處理完成

將資料庫「倒出來」:
sqlite3 film.db ".mp" > output.sql
利用輸出的資料,建立一個一模一樣的資料庫(加上以上指令,就是標準的SQL資料庫
備份了):
sqlite3 film.db < output.sql
在大量插入資料時,你可能會需要先打這個指令:
begin;
插入完資料後要記得打這個指令,資料才會寫進資料庫中:
commit;

❾ SQLSERVER資料庫中批量導入數據的幾種方法

我們通過SQL腳本來插入數據,常見如下四種方式。

方式一:一條一條插入,性能最差,不建議使用。

INSERT INTO Proct(Id,Name,Price) VALUES(newid(),'牛欄1段',160);INSERT INTO Proct(Id,Name,Price) VALUES(newid(),'牛欄2段',260);
......

方式二:insert bulk

語法如下:

方式四:拼接SQL

INSERT INTO Proct(Id,Name,Price) VALUES(newid(),'牛欄1段',160)
,(newid(),'牛欄2段',260)
......

❿ 如何把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 的第一行是重復的,請手動刪除