>  기사  >  웹 프론트엔드  >  pg-promise를 사용하여 PostgreSQL 데이터베이스에서 다중 행 삽입을 효율적으로 수행하려면 어떻게 해야 합니까?

pg-promise를 사용하여 PostgreSQL 데이터베이스에서 다중 행 삽입을 효율적으로 수행하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-30 14:03:03194검색

How can I efficiently perform multi-row inserts in a PostgreSQL database using pg-promise?

pg-promise를 사용한 다중 행 삽입

단일 쿼리로 데이터베이스 테이블에 여러 행을 삽입하면 특히 다음과 같은 경우 성능이 크게 향상될 수 있습니다. 대규모 데이터 세트를 처리합니다. 강력한 SQL 쿼리 빌더이자 실행기 라이브러리인 Pg-promise는 다중 행 삽입을 수행하는 편리하고 효율적인 방법을 제공합니다.

도우미가 포함된 다중 행 삽입

pg-promise를 사용하여 여러 행을 삽입하려면 도우미 네임스페이스를 사용할 수 있습니다. 이 네임스페이스는 매개변수화 가능한 SQL 쿼리를 쉽게 구성할 수 있게 해주는 유틸리티 함수 세트를 제공합니다.

<code class="javascript">const pgp = require('pg-promise')({
  capSQL: true // capitalize all generated SQL
});
const db = pgp(/*connection*/);
const {ColumnSet, insert} = pgp.helpers;

// our set of columns, to be created only once (statically), and then reused,
// to let it cache up its formatting templates for high performance:
const cs = new ColumnSet(['col_a', 'col_b'], {table: 'tmp'});
    
// data input values:
const values = [{col_a: 'a1', col_b: 'b1'}, {col_a: 'a2', col_b: 'b2'}];
    
// generating a multi-row insert query:
const query = insert(values, cs);
//=> INSERT INTO &quot;tmp&quot;(&quot;col_a&quot;,&quot;col_b&quot;) VALUES('a1','b1'),('a2','b2')
    
// executing the query:
await db.none(query);</code>

ColumnSet 클래스는 삽입할 열을 정의하는 반면, 삽입 함수는 삽입할 데이터 값을 가져와 생성합니다. SQL 쿼리. 이 접근 방식은 성능이 뛰어나며 단일 행 및 다중 행 삽입을 모두 허용합니다.

SQL 주입 보호

SQL 주입 보호에 대한 부차적인 질문은 다음과 같습니다. 자리 표시자($1, $2 등)를 사용한다고 해서 그 자체로 보호가 보장되는 것은 아니라는 점을 이해하는 것이 중요합니다. 악성 SQL 명령이 실행되는 것을 방지하려면 자리 표시자를 적절한 입력 유효성 검사 및 삭제와 결합하는 것이 중요합니다. Pg-promise는 기본적으로 이 접근 방식을 사용하여 데이터베이스에 데이터를 삽입하는 안전한 방법을 제공합니다.

추가 고려 사항 및 추가 사항

  • ID 반환 : 새로 삽입된 레코드의 ID를 검색하려면 쿼리에 RETURNING id를 추가하고 map 메소드로 실행하여 결과를 정수 배열로 변환합니다.
  • 대량 데이터 가져오기: 매우 큰 데이터 세트를 가져오려면 pg-promise에서 제공하는 데이터 가져오기 기능을 사용하는 것이 좋습니다.
  • 속도 최적화: 쿼리 생성을 함수로 래핑하여 쿼리 생성을 보장할 수 있습니다. 한 번만 수행되므로 실행 속도가 더욱 향상됩니다.

결론적으로 pg-promise의 도우미 네임스페이스를 사용하면 다중 행 삽입을 쉽게 수행할 수 있어 SQL 주입을 방지하는 동시에 성능을 최적화할 수 있습니다.

위 내용은 pg-promise를 사용하여 PostgreSQL 데이터베이스에서 다중 행 삽입을 효율적으로 수행하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.