在MySQL中批量插入值

时间:2010-09-03 20:46:16

标签: java mysql

我正在尝试将一个由12个数组组成的JAVA程序的输出用于一堆不同的用户并将它们放入表中。无论如何都要批量做这个,而不必一次做一个吗?

4 个答案:

答案 0 :(得分:2)

我这样做了:

INSERT INTO my_users (name, passwd, somefield)
VALUES 
 ('joe', 'pass', 'abc'),
 ('jeff', 'pass1', 'abcd'),
 ('jake', 'pass2', 'abcde')

答案 1 :(得分:1)

始终可以将数据写入文件,并使用LOAD DATA INFILE语句将它们批量读入数据库。但是根据规模,可能不值得担心这里的速度。

答案 2 :(得分:1)

使用批量插入。适应http://www.roseindia.net/jdbc/jdbc-mysql/PreparedStatementBatchUpdate.shtml

  Connection conn;
  User[] users;

  PreparedStatement prest = con.prepareStatement("INSERT INTO users VALUES(?,?)");

  conn.setAutoCommit(false);
  for(user : users) {
      prest.setString(1, User.getUserName());
      prest.setInt(2, User.getAge());
  }
  prest.addBatch();

  int count[] = prest.executeBatch();

  conn.setAutoCommit(true);
  prest.close();

在现实世界中,你会想要用一堆try..finally块来撒上它,但我会假设你知道或者可以在别处找到如何做到这一点。

答案 3 :(得分:0)

INSERT允许您一次插入多个值:

INSERT
INTO
    table
    (column_a, column_b, column_c)
VALUES
    (1, 2, 3),
    (4, 5, 6),
    (7, 8, 9)
;

这是标准SQL,应该适用于大多数数据库。 (我遇到过一些例外:过时的DB和MSSQL,但你使用的是MySQL,它支持这个。)