批量插入数据库数据脚本
插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;、