2014-03-13 2 views
0

Java에서 플랫 파일을 생성해야합니다. 이 플랫 파일에서 데이터가 오라클 테이블에서 오는 insert 문을 작성합니다. 이 코드 시스템이 지금은 루프 그래서 코드는 위의 INSERT 문을 생성하는 반면에 사용하지 않으려는이오라클의 테이블 데이터 내보내기

INSERT INTO Table1 VALUES ('80896948  ','gMWcjDMPXox4LVyrXGw0Ok+4SQI='); 
INSERT INTO Table1 VALUES ('39454249  ','z+5fkcA+7wrZrF2455kngiTdYU4='); 
INSERT INTO Table1 VALUES ('52167960  ','+N55nru+ewwhKPJygW99T8yEQXg='); 

같은 삽입 문을 생성하여 실행하면 다음 내 자바 코드

stmtSQL="SELECT * FROM Table1"; 
resultSQL=null; 
resultSQL=myCreateStmt.executeQuery(stmtSQL); 
strSQLIns=""; 
while(resultSQL.next()) 
{ 
strSQLIns=strSQLIns+"INSERT INTO Table1 VALUES ('"; 
for(int iLoopCtr=0;iLoopCtr<27;iLoopCtr++) 
{ 
    if(iLoopCtr==26) 
     strSQLIns=strSQLIns+resultSQL.getString(iLoopCtr+1)+"'"; 
    else 
     strSQLIns=strSQLIns+resultSQL.getString(iLoopCtr+1)+"','"; 
} 
strSQLIns=strSQLIns+");\n"; 
} 

입니다. 나는 이렇게 빠른 SQL 쿼리를 생성 할 수있는 빠른 방법을 원한다.

INSERT INTO Table1 (c1,c2) (SELECT '1', 'first row' FROM dual UNION SELECT '2', 'second row' FROM dual); 
+1

무엇이 질문 : –

+0

"INSERT INTO Table1 (c1, c2) (SELECT '1', 'UNION SELECT'2 ','두 번째 행 '에서'첫 번째 행 '과 같은 형식으로 테이블의 데이터를 가져 오는 방법이 있습니까? FROM 이중); " 그래서 우리는 하나의 insert 문으로 여러 행을 삽입 할 수 있습니다. – Prem

+0

@prem이 문제를 해결 했습니까? – quento

답변

0

프로덕션 환경에있는 경우 : 당신이 무엇을해야하는 가장 빠른 방법은 학업 문제가있는 경우 오라클은 당신에게

http://docs.oracle.com/cd/B10501_01/server.920/a96652/ch01.htm

을 제공 가져 오기/내보내기 도구를 사용하는 것 또는 이를 위해서이 작업을 수행하고 있습니다.

프로그램은 좋은 출발점입니다. ResultSetMetadata을 읽으므로 코드에서 해당 마법 '26'을 삭제할 수 있습니다. 그냥 List<String[]>에 모두 저장 한 다음 해당 목록을 반복하여 INSERT-SELECT 명령을 작성하십시오. 예를 지나치게 단순화되는 것을 조심, 당신은 몇 가지 문제로 실행됩니다 : 날짜와 번호와 같은 일부 데이터 유형과

  • , 당신은 올바른 문자열을 형식을 추가-조심해야합니다
  • 으로 일부 데이터 형식 BLOB로, 당신의 아이디어는 작동하지 않을 것입니다
+0

프로덕션 환경 데이터에서 작업하고 있습니다. 내 코드는 예제에서와 같이 삽입 명령문의 긴 목록을 생성하지만 원하는 방식으로 oracle 테이블의 여러 행을 가진 형식화 된 단일 삽입 문을 만들 수 있습니다. 예상 된 예가 두 x 째 목록에 표시됩니다. 파일이 생성되면이 데이터는 다른 db에 업로드되어 원격으로 작업됩니다 – Prem

관련 문제