
PreparedStatement를 사용하여 preparedStatement를 사용하여 MySQL에 여러 행 삽입
Java에서는 ReadyStatement의 배치를 사용하여 MySQL 테이블에 여러 행을 효율적으로 삽입할 수 있습니다. 처리 능력. 이전에는 각 행에 대해 개별 SQL 문을 실행하는 것이 일반적이었습니다.
1 2 3 4 5 6 | for (String element : array ) {
myStatement.setString(1, element[0]);
myStatement.setString(2, element[1]);
myStatement.executeUpdate();
}
|
로그인 후 복사
그러나 성능을 최적화하기 위해 MySQL은 한 번에 여러 행을 삽입할 수 있는 구문을 제공합니다.
1 | INSERT INTO table (col1, col2) VALUES ( 'val1' , 'val2' ), ( 'val1' , 'val2' )[, ...]
|
로그인 후 복사
preparedStatement에서 이 접근 방식을 활용하려면 일괄 처리가 필요합니다.
-
ReadyStatement: SQL 문을 준비하고 각 행에 대한 매개변수를 설정합니다. addBatch()를 사용하여 각 명령문을 배치에 추가합니다.
-
배치 실행: 모든 행이 추가되면 ExecuteBatch()를 호출하여 전체 배치를 실행합니다. 이 메소드는 각 명령문의 영향을 받는 행 수를 나타내는 업데이트 수 배열을 반환합니다.
다음은 프로세스를 보여주는 예입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public void save(List<Entity> entities) throws SQLException {
try (
Connection connection = database.getConnection();
PreparedStatement statement = connection.prepareStatement(SQL_INSERT);
) {
int i = 0;
for (Entity entity : entities) {
statement.setString(1, entity.getSomeProperty());
statement.addBatch();
i++;
if (i % 1000 == 0 || i == entities.size()) {
statement.executeBatch();
}
}
}
}
|
로그인 후 복사
1000개 행마다 배치 실행 JDBC 드라이버 또는 데이터베이스가 배치 크기에 부과하는 잠재적인 제한을 피하는 데 도움이 됩니다.
자세한 내용은 JDBC 튜토리얼을 참조하세요. 일괄 업데이트를 위한 preparedStatement 및 명령문 개체 사용에 대한 자세한 내용입니다.
위 내용은 Java의 ReadyStatement를 사용하여 MySQL에 여러 행을 효율적으로 삽입하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!