批量插入数据库数据脚本
插5w条数据到表里面,如果一条一条insert会很麻烦
mysql版本:
-
DELIMITER $$
:这行代码设置了新的定界符为$$
,以替代默认的分号;
。这是因为存储过程中可能包含多个SQL语句,为了区分每个语句的结束,需要使用不同于默认分号的定界符。 -
CREATE PROCEDURE InsertData()
:这行代码定义了一个名为InsertData
的存储过程。CREATE PROCEDURE
是用于创建存储过程的语句。InsertData
是存储过程的名称,您可以根据需要进行更改。 -
BEGIN
和END
:这两行代码标记存储过程的开始和结束。 -
DECLARE i INT DEFAULT 1;
:这行代码声明一个名为i
的整数型变量,并将其初始值设为1。在循环中,我们将使用这个变量来迭代插入操作。 -
WHILE i <= 10 DO
和END WHILE;
:这两行代码定义了一个循环结构,只要i
小于等于10,循环内的代码块就会被执行。 -
INSERT INTO your_table (column1, column2) VALUES (value1, value2);
:这行代码表示插入一条数据到名为your_table
的表中。您需要将your_table
替换为实际的表名,将column1
和column2
替换为要插入数据的列名,将value1
和value2
替换为具体的值。 -
SET i = i + 1;
这行代码将变量i
的值递增1,以便进行下一次迭代。
最后,DELIMITER ;
将定界符恢复为默认的分号;
。
创建一个存储过程
DELIMITER $$
CREATE PROCEDURE insert_data()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i <= 50000
DO
INSERT INTOyour_table1
(column1
,column2
) VALUES (value1, value2);
INSERT INTOyour_table2
(column1
,column2
) VALUES (value1, value2);
SET i = i + 1;
END WHILE;
END $$
DELIMITER ;用CALL执行这个存储过程
CALL insert_data();
最后删除掉这个存储过程即可,如果存储过程存在,则会被删除;如果不存在,则不会执行任何操作
DROP PROCEDURE IF EXISTS insert_data;
oracle版本:
--增量
declare
i integer;--定义变量
begin
i :=1;
loop
insert into your_table(column1,column2
) VALUES (value1,value2);
/*参数递增*/
i :=i+1;
/*停止条件*/
exit when i>5000000;
end loop;
commit;
end;、