Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MySQL中进行批量插入_Mysql_Sql_Database_Insert - Fatal编程技术网

如何在MySQL中进行批量插入

如何在MySQL中进行批量插入,mysql,sql,database,insert,Mysql,Sql,Database,Insert,我有1个或多个记录需要输入到表中。在查询中执行此操作的最佳方法是什么?我应该只做一个循环,每次迭代插入一条记录吗?还是有更好的方法?从 插入使用值的语句 语法可以插入多行。做 这包括列的多个列表 值,每个值都包含在 括号和之间用逗号分隔。 例如: mysql允许您一次插入多行 大多数情况下,请参阅,您不是在MySQL客户端中工作,应该使用适当的API将插入批处理在一起 例如,在JDBC中: connection con.setAutoCommit(false); PreparedStateme

我有1个或多个记录需要输入到表中。在查询中执行此操作的最佳方法是什么?我应该只做一个循环,每次迭代插入一条记录吗?还是有更好的方法?

插入使用值的语句 语法可以插入多行。做 这包括列的多个列表 值,每个值都包含在 括号和之间用逗号分隔。 例如:


mysql允许您一次插入多行


大多数情况下,请参阅

,您不是在MySQL客户端中工作,应该使用适当的API将插入批处理在一起

例如,在JDBC中:

connection con.setAutoCommit(false); 
PreparedStatement prepStmt = con.prepareStatement("UPDATE DEPT SET MGRNO=? WHERE DEPTNO=?");
prepStmt.setString(1,mgrnum1);                 
prepStmt.setString(2,deptnum1);
prepStmt.addBatch();

prepStmt.setString(1,mgrnum2);                        
prepStmt.setString(2,deptnum2);
prepStmt.addBatch();

int [] numUpdates=prepStmt.executeBatch();

加载数据填充查询是更好的选择,但像godaddy这样的一些服务器将此选项限制在共享主机上,因此,只剩下两个选项,一个是在每次迭代或批量插入时插入记录,但是batch insert有其字符限制,如果您的查询超过mysql中设置的字符数,那么您的查询将崩溃,因此我建议使用batch insert将数据分块插入,这将最大限度地减少与数据库建立的连接数。祝您好运各位

在尝试使用之前,请阅读有关语句或函数的文档!如果您有大量记录,并且可以将其格式化为CSV文件,请查看LOAD DATA INFILE语句或mysqlimport命令。对于记录,这是一个非常灵活的命令,不需要CSV输入;任何文本格式都可以,并且有许多有用的参数用于解析和操作输入数据。这绝对是将数据加载到本地数据库的最快方法。不清楚上面“最佳”是什么意思:即简单性(使用INSERT语句)是否胜过速度(使用LOAD DATA)。一篇关于批插入的好博客文章(在Java中,但它与任何语言都相关):这比加载数据填充慢吗?在存储过程中写入此insert语句的语法是什么?@Nitin语法不是一样吗。。???这就是我在SQL Server中要做的。请注意,虽然问题的标签是“如何进行批量插入”,但这个答案实际上是批量插入。批量通常更快,请参见@Lukman的@Koffeehaus Per,可以插入的值/行数受
加载数据本地填充'/users/name/txt.file'
如何
插入到select from
性能限制?它和批量插入一样快吗?
Insert into table(col1,col2) select col1,col2 from table_2;
connection con.setAutoCommit(false); 
PreparedStatement prepStmt = con.prepareStatement("UPDATE DEPT SET MGRNO=? WHERE DEPTNO=?");
prepStmt.setString(1,mgrnum1);                 
prepStmt.setString(2,deptnum1);
prepStmt.addBatch();

prepStmt.setString(1,mgrnum2);                        
prepStmt.setString(2,deptnum2);
prepStmt.addBatch();

int [] numUpdates=prepStmt.executeBatch();