Q&A

  • 쿼리로 조회시 조회되는 데이터 건수의 한계가 있나요?
A라는 테이블에서 데이터를 가공하여 B라는 테이블로 Insert 시키려고 합니다.



//----------------------

query1.close;

query1.sql.add('select * from A');

query1.open;



while not query1.eof do begin

ZZZ := query1.paramByName('aaa').Asstring



query2.close;

query2.sql.add('Insert into B values (....,aaa, ..);

paramByName('aaa').Asstring := ZZZ;



query2.ExecSQL;



query1.next;

end;

//----------------------

원래 테이블 A의 데이터 건수는 40000건 이상입니다.

그런데 위 코드를 통해서 insert 되는 데이터는 32204로 끝납니다.

(테아블 A의 데이터 건수가 32204보다 작으면 무리없이 잘 입력됩니다.)



쿼리의 조회시 32204건이라는 한계가 있는건지 아니면 소스코드가 잘못된건지..

아시는 분 답변부탁드립니다.

2  COMMENTS
  • Profile
    병부잡이 2001.01.19 06:37
    만약 오라클이라면

    롤백 세그먼트 사이즈 때문일겁니다..



    롤백 세그먼트에 정의된 크기 이상을 입력하는 경우에 크기를 초과하여 자동으로 롤백됩니다..



    create로 새로운 롤백세그먼트를 잡아주시거나

    기존 롤백세그먼트를 Alter시키시면 됩니다..





    Mr wrote:

    > A라는 테이블에서 데이터를 가공하여 B라는 테이블로 Insert 시키려고 합니다.

    >

    > //----------------------

    > query1.close;

    > query1.sql.add('select * from A');

    > query1.open;

    >

    > while not query1.eof do begin

    > ZZZ := query1.paramByName('aaa').Asstring

    >

    > query2.close;

    > query2.sql.add('Insert into B values (....,aaa, ..);

    > paramByName('aaa').Asstring := ZZZ;

    >

    > query2.ExecSQL;

    >

    > query1.next;

    > end;

    > //----------------------

    > 원래 테이블 A의 데이터 건수는 40000건 이상입니다.

    > 그런데 위 코드를 통해서 insert 되는 데이터는 32204로 끝납니다.

    > (테아블 A의 데이터 건수가 32204보다 작으면 무리없이 잘 입력됩니다.)

    >

    > 쿼리의 조회시 32204건이라는 한계가 있는건지 아니면 소스코드가 잘못된건지..

    > 아시는 분 답변부탁드립니다.

  • Profile
    Mr 2001.01.19 18:13
    우선 답변감사합니다.



    제가 사용하는 DB는 MSSQL7입니다.

    오라클은 사용을 해보지 않아서 롤백 세그먼트가 무엇인지

    잘 모르겠군요. 자세히 설명해 주시면 고맙겠습니다.









    병부잡이 wrote:

    > 만약 오라클이라면

    > 롤백 세그먼트 사이즈 때문일겁니다..

    >

    > 롤백 세그먼트에 정의된 크기 이상을 입력하는 경우에 크기를 초과하여 자동으로 롤백됩니다..

    >

    > create로 새로운 롤백세그먼트를 잡아주시거나

    > 기존 롤백세그먼트를 Alter시키시면 됩니다..

    >

    >

    > Mr wrote:

    > > A라는 테이블에서 데이터를 가공하여 B라는 테이블로 Insert 시키려고 합니다.

    > >

    > > //----------------------

    > > query1.close;

    > > query1.sql.add('select * from A');

    > > query1.open;

    > >

    > > while not query1.eof do begin

    > > ZZZ := query1.paramByName('aaa').Asstring

    > >

    > > query2.close;

    > > query2.sql.add('Insert into B values (....,aaa, ..);

    > > paramByName('aaa').Asstring := ZZZ;

    > >

    > > query2.ExecSQL;

    > >

    > > query1.next;

    > > end;

    > > //----------------------

    > > 원래 테이블 A의 데이터 건수는 40000건 이상입니다.

    > > 그런데 위 코드를 통해서 insert 되는 데이터는 32204로 끝납니다.

    > > (테아블 A의 데이터 건수가 32204보다 작으면 무리없이 잘 입력됩니다.)

    > >

    > > 쿼리의 조회시 32204건이라는 한계가 있는건지 아니면 소스코드가 잘못된건지..

    > > 아시는 분 답변부탁드립니다.