mysql存儲過程批量插入數據
『壹』 怎麼用用mysql命令行快速插入一千條數據
先介紹一個關鍵字的使用:
delimiter 定好結束符為"$$",(定義的時候需要加上一個空格) 然後最後又定義為";", MySQL的默認結束符為";"
如何通過mysql命令行批量插入100條數據呢,可以在代碼里實現,也可以通過命令行,也就是通過存儲過程:
[java] view plain
delimiter $$
create procere myproc ()
begin
declare num int ;
set num = 1 ;
while num < 100 do
insert into emp (id, `name`, sex)
values
('', concat("name", num), 1) ;
set num = num + 1 ;
end
while ;
『貳』 mysql中如何批量插入數據
update 表名 set type=true where name>=1 and name <=100
『叄』 怎麼寫存儲過程,向資料庫中批量插入數據
用循環語句生成欄位值insert
SQL 如下:
createprocereInsertTest
as
begin
declare@iint
declare@svarchar(20)
set@i=1
while@i<=100
begin
select@s=cast(@iASvarchar(20))
insertintotest(A,B,C,D)VALUES('a'+@s,'b'+@s,'ccccc','ddddd')
SET@i=@i+1
end
end
『肆』 c#中往mysql里批量插入上萬條數據,有比較高效的方法嗎
首先, 插入上萬條數據,對於資料庫來說並不是「很大」的工作量,一般配置的筆記本電腦都可以在1分鍾內完成。 所以最簡單、最靈活的辦法還是寫SQL語句。
如果不希望DB編譯器每次執行都編譯SQL的話,可以使用存儲過程,直接調用,性能上會好很多。也比較簡單。
(幾萬條數據怎麼地也得要時間去處理,所以不可能特別快的。)
如果由於各種原因,導致這個插入還是很慢, 而且你的MYSQL又是5.0以上版本的話,可以使用BulkCopy來進行批量操作。
BulkCopy的原理就是Client直接把一個數組(DataTable)傳給DB,然後傳入表名,所有的編譯、操作都由DB自己完成,效率很高。
引用MySql.Data.dll , 調用MysqlBulkCopy函數即可。
這個函數在處理海量數據插入的時候效率尤為明顯, 小量數據反而沒什麼優勢,而且由於傳入的DataTable格式必須和表的欄位一模一樣(空的列也要傳進去),導致C#要寫很多代碼來構造這個數組,所以要你自己權衡用還是不用。
我在自己的電腦上批量插入一億條數據,Insert寫法大概需要1小時,BulkCopy大概只需要5分鍾。
『伍』 mysql存儲過程怎樣批量插入數據
一下代碼運行通過:
delimiter$$;
createprocerelucia_proc16(countint)
begin
DECLAREname_procVARCHAR(20)CHARACTERSETutf8;
DECLAREsex_procVARCHAR(4)CHARACTERSETutf8;
DECLAREage_procINT(10);
DECLAREclass_procVARCHAR(20)CHARACTERSETutf8;
DECLAREAddr_procVARCHAR(50)CHARACTERSETutf8;
DECLAREiINT;
seti=1;
setsex_proc='女';
setage_proc=20;
setclass_proc='山治班';
setAddr_proc='北京市朝陽區';
whilei<countdo
setname_proc=CONCAT('露西亞',i);
insertintostudents(Name,Sex,age,class,Addr)values(name_proc,sex_proc,age_proc,class_proc,Addr_proc);
seti=i+1;
endwhile;
end
$$;
delimiter;
代碼功能:
傳入一個行數,控制插入多少條數據
運行效果:
『陸』 mysql批量插入數據
不用INSERTINTO難不成用UPDATE,數據導入3000條貌似不多吧
你要這么一說,還真有點難度了,因為數據類型不一樣,還不能用數組,貌似沒有什麼絕竅
不過你可以直接用EXCEL中的CONCATENATE()函數把你的數據轉換成SQL輸入語句
然後把這個輸入語句腳本放到一個文件中,如Iinsert.sql
接著用類似下面的代碼把這個腳本導入MYSQL執行
php">!$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"已建立數據表...<br><br> ";
『柒』 MySQL實現創建存儲過程並循環添加記錄的方法
本文實例講述了MySQL實現創建存儲過程並循環添加記錄的方法。分享給大家供大家參考,具體如下:
先創建,然後調用:
--
創建存儲過程
DELIMITER;//
create
procere
myproc()
begin
declare
num
int;
set
num=1;
while
num
<=
24
do
insert
into
t_calendar_hour(hourlist)
values(num);
set
num=num+1;
end
while;
commit;
end;//
--
調用存儲過程
CALL
myproc();
PS:這里再為大家推薦2款常用的sql在線工具供大家參考使用(包含SQL語句用法說明):
SQL在線壓縮/格式化工具:
http://tools.jb51.net/code/sql_format_compress
SQL代碼在線格式化美化工具:
http://tools.jb51.net/code/sqlcodeformat
更多關於MySQL相關內容感興趣的讀者可查看本站專題:《MySQL存儲過程技巧大全》、《MySQL常用函數大匯總》、《MySQL日誌操作技巧大全》、《MySQL事務操作技巧匯總》及《MySQL資料庫鎖相關技巧匯總》
希望本文所述對大家MySQL資料庫計有所幫助。
『捌』 如何使用MySQL實現批量插入數據
用存儲過程,寫個循環給你個我以前寫的看看
begin
declare i int;
declare b int;
declare c int;
set @i=2;
set @b=6;
set @c=0;
set @stmt = concat('insert into t_j_goods_name (id,`code`,`name`)
values(?,?,(select distinct `a` from sheet1 limit ?, 1))');
while @i<442 do
prepare s1 from @stmt;
execute s1 using @b,@i,@c;
deallocate prepare s1;
set @i=@i+1,@b=@b+1,@c=@c+1;
end while;
end
『玖』 mysql批量插入測試數據問題
拜託,你這個是創建存儲過程的語句,而不是執行的語句,執行要用下面的語句
CALL dowhile
『拾』 mysql中能不能運行一次insert插入多條數據
可以:
這樣就行了,給你舉個例子:
INSERT INTO `mytest`.`hello` (
`id` ,
`name`
)
VALUES (
NULL , 'qq'
), (
NULL , 'ww'
), (
NULL , 'ee'
), (
NULL , 'rr'
), (
NULL , 'tt'
);