Java에서 연결을 통해 MySQL 데이터베이스에 파싱하고 삽입하는 원시 HTML 파일이 있습니다. 내가 문 "INTO 교환"이 방법을 사용하고 있습니다테이블 행이 사라지는 것 같습니다
:
public void migrate(SomeThread thread) throws Exception{
PreparedStatement threadStatement = SQL.prepareStatement(threadQuery);
thread.prepareThreadStatement(threadStatement);
threadStatement.executeUpdate();
threadStatement.close();
for(SomeThread.Post P : thread.threadPosts){
PreparedStatement postStatement = SQL.prepareStatement(postQuery);
P.preparePostStatement(postStatement);
postStatement.executeUpdate();
postStatement.close();
}
}
내 프로그램의 3 개 별도의 인스턴스를 실행하고 구문 분석 htmls 자신의 별도의 디렉토리에 자신의 명령 프롬프트에서 각하고, 범하다.
데이터베이스를 모니터링하기 위해 HeidiSQL을 사용하고 있습니다. 예를 들어 한 테이블에서 한 행에 500,000 개의 행이있는 것을 볼 수있는 곳에서 재미있는 일이 발생하면 HeidiSQL을 닫고 나중에 다시 확인합니다. 나는 지금 440,000 행을 가지고있다. 같은 것을 사용하고있는 두 테이블에 대해 발생합니다.
두 테이블 모두 "id"라는 기본 키를 사용하며 각 ID는 고유 한 도메인을 갖지만 값이 겹치고 서로 겹쳐 쓸 수 있습니까? SQL이 테이블의 "로컬"id 값을 구별 할 것이기 때문에 이것이 문제가 될 수 있는지 확실하지 않습니다.
그렇지 않으면 DB에 연결되어있는 3 개의 개별 인스턴스를 실행 중이므로 하나의 행이 커밋되고 실행이 다른 커밋으로 바뀌는 마법 같은 일이 발생한다고 생각했습니다. 명령문을 사용하여 테이블을 옮긴 다음 첫 번째 커밋으로 돌아간 다음 데이터베이스가 수집 된 행 수를 롤백하도록하는 마법을 다시 발생시킵니다.
저는 SQL을 처음 접했을 때 누군가가 도대체 무슨 일이 일어나고 있는지에 대한 아이디어를 갖고 있고 올바른 방향으로 나를 가리킬 수 있다면 정말 고맙겠습니다.
감사