2017-03-07 3 views
0

제목에 전체 요구 사항을 맞출 수 없습니다. 그래서 여기 있습니다.업로드 된 Excel 시트의 데이터를 VB.NET을 사용하여 Oracle 데이터베이스 테이블에로드하는 방법

업로드 된 Excel 시트에서 각 행을 읽고 검사를 위해 데이터베이스로 보내는 매우 오래된 VB.NET 웹 응용 프로그램이 있습니다. Excel에는 수천 개의 레코드가 포함될 수 있습니다. 이로 인해 많은 데이터베이스 호출이 발생하고 성능이 매우 저하됩니다.

이 문제를 방지하기 위해 각 Excel 행의 키 열을 문자열에 추가하고 코드 자체에 SQL 쿼리를 작성한 다음 실행을 위해 데이터베이스로 전달했습니다. 나는 그것이 권장 접근 방식이 아니라는 것을 알고 있지만, 성능은 우리에게 주요 관심사 였고, 사용자가 일반적으로 얼마나 많은 레코드를 가지고 있는지는 알지 못했습니다. 그래서, 이것은 엑셀의 행이 500-600을 초과하지 않는다는 가정하에 개발되었습니다.

이제 우리는 또 다른 문제에 직면 해 있습니다. 사용자가 대용량 Excel 파일을 업로드하면 생성 된 SQL은 Oracle 쿼리 길이 제한 (SQL 쿼리의 경우 4KB, PL/SQL 실행 즉시의 경우 32KB)에서 벗어나 쿼리 실패가 발생합니다.

지금 내가 계획하고있는 것은 임시 데이터베이스 테이블에 Excel을로드하고 저장 프로 시저를 통해 확인을 수행하는 것입니다. 그러나 각 레코드 삽입을 수행 할 수는 없으므로 처음부터 제거하려고하는 데이터베이스 호출이 늘어납니다. 봤 거든 VB.NET 내에서 sqlldr.exe를 통해로드에 대해 발견하지만 그것도 적절한 접근 방식처럼 보이지 않습니다.

다른 옵션이 있습니까?

+0

StackOverflow는 사람들이 기존 코드를 수정하도록 돕는 것입니다. 코드, 자습서, 연구, 도구, 권장 사항, 라이브러리 등에 대한 요청 은 오프 주제입니다. http://stackoverflow.com/help/how-to-ask, http://stackoverflow.com/help/dont-ask, http://stackoverflow.com/help/mcve를 읽고 [둘러보기] (http://stackoverflow.com/tour) 여기에 더 많은 질문을 게시하기 전에. 행운을 빕니다. – shellter

답변

1

이 날이라면, 내가

  1. 저장 엑셀은 CSV
  2. 외부 테이블을 작성하는 "포인트"를 CSV 파일로 파일을 것입니다.
  3. 요구 사항에 따라, 나는 할 수

실행 SQL 그들이에 외부 테이블에서 하나 개의 오프의

또는

로드 데이터입니다 직접하는 경우 외부 테이블에 (쿼리) 일반 오라클 테이블.

+0

감사합니다. @BobC. 비슷한 접근법을 사용했지만 외부 테이블 대신 실제 테이블을 외부 테이블로 사용했습니다. 데이터베이스 서버에 Excel 문서가 필요합니다. vb.net에서 SQL 로더를 호출하여 테이블에 데이터를로드합니다. –

0

내가 너라면, 나는 그것을 배치했다. 이미 500-600에 대한 코드가 있으므로 해당 양이되면 쿼리를 실행 한 다음 다시 수행하십시오.