mysql数据库批量快速插入(sql数据库怎样批量添加数据)

发布时间:2022-11-15

本文目录一览:

1、mysql怎么快速插入大量数据
2、使用JDBC在MySQL数据库中如何快速批量插入
3、MySQL如何快速插入大量数据
4、mysql数据库中怎么批量插入数据
5、MYSQL批量插入数据库实现语句性能分析
6、mysql批量插入数据怎么写sql语句呢?

mysql怎么快速插入大量数据

通过导入文件的方式插入,文件可以用其他方式先生成,比如使用Java,来生成data1.txt,然后使用下面的SQL语句:

LOAD DATA LOCAL INFILE 'd:/data1.txt' REPLACE INTO TABLE hk_acinfo LINES TERMINATED BY '\r\n'

使用这个方法,我插入过1千万以上的数据,如果没有网络影响的话,每秒1M+/s的速度写入,很快。

使用JDBC在MySQL数据库中如何快速批量插入

可以使用JDBC预编译+批量更新,这样的执行效率最高。 具体是这样使用的: 循环2000条数据,例如数据被装到了一个名叫dataListList<Map<String, String>>中,那么批量更新就是这样执行的:

Map map = null;
String data1 = "";
String data2 = "";
String sql = "INSERT INTO biao VALUES(?,?)";
PreparedStatement preStmt = conn.prepareStatement(sql);
for (int i = 0; i < dataList.size(); i++) {
    map = dataList.get(i);
    data1 = map.get("data1");
    data2 = map.get("data2");
    preStmt.setString(1, data1);
    preStmt.setString(2, data2);
    preStmt.addBatch();
}
preStmt.executeBatch();
preStmt.clearBatch();

MySQL如何快速插入大量数据

通过导入文件的方式插入,文件可以用其他方式先生成,比如使用Java,来生成data1.txt,然后使用下面的SQL语句:

LOAD DATA LOCAL INFILE 'd:/data1.txt' REPLACE INTO TABLE hk_acinfo LINES TERMINATED BY '\r\n'

使用这个方法,我插入过1千万以上的数据,如果没有网络影响的话,每秒1M+/s的速度写入,很快。

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, 'Name1', 'Value1', 'Other1');

MySQL允许我们在一条SQL语句中批量插入数据,如下SQL语句:

INSERT INTO example (example_id, name, value, other_value)
VALUES
(100, 'Name1', 'Value1', 'Other1'),
(101, 'Name2', 'Value2', 'Other2'),
(102, 'Name3', 'Value3', 'Other3'),
(103, 'Name4', 'Value4', 'Other4');

如果我们插入列的顺序和表中列的顺序一致的话,还可以省去列名的定义,如下SQL:

INSERT INTO example
VALUES
(100, 'Name1', 'Value1', 'Other1'),
(101, 'Name2', 'Value2', 'Other2'),
(102, 'Name3', 'Value3', 'Other3'),
(103, 'Name4', 'Value4', 'Other4');

上面看上去没什么问题,下面我来使用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条提交下)

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");

最后显示消耗的时间为:22:56:13 → 23:04:00,一共8分13秒。

第三种方法:使用优化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);

最后总结下,在插入大批量数据时,第一种方法无疑是最差劲的,而第二种方法在实际应用中就比较广泛,第三种方法在插入测试数据或者其他低要求时比较合适,速度确实快。

mysql批量插入数据怎么写sql语句呢?

如果就一个name字段并且ID是自增的话就这样:

INSERT INTO tablename VALUES('name1','name2','name3','name4')

否则就这样:

INSERT INTO tablename VALUES(('1','name1'),('3','name2'),('2','name3'),('8','name4'))

当然也可以这样写,上面的是简化的:

INSERT INTO tablename (name) VALUES ('name1','name2','name3','name4')
INSERT INTO tablename (id,name) VALUES (('1','name1'),('3','name2'),('2','name3'),('8','name4'))