> 데이터 베이스 > MySQL 튜토리얼 > 테이블 생성 권한 없이 데이터베이스에 대해 많은 문자열을 효율적으로 일치시키는 방법은 무엇입니까?

테이블 생성 권한 없이 데이터베이스에 대해 많은 문자열을 효율적으로 일치시키는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2025-01-19 14:52:10
원래의
954명이 탐색했습니다.

How to Efficiently Match Many Strings Against a Database Without Table Creation Privileges?

테이블 생성 권한 없이 Oracle 데이터베이스의 많은 수의 문자열을 효율적으로 일치

Oracle SQL Developer에서는 많은 수의 문자열을 데이터베이스와 일치시켜야 하지만 테이블을 생성하거나 편집하는 데 필요한 권한이 부족할 수 있습니다. 이러한 상황에서는 일치 프로세스를 효율적으로 수행하기 위한 대체 방법이 필요합니다.

컬렉션 사용

한 가지 해결책은 데이터 값을 저장할 임시 컨테이너를 만들 수 있는 컬렉션을 사용하는 것입니다. Oracle은 두 가지 유형의 컬렉션을 제공합니다.

  1. Oracle 변수 배열(VARRAY): 이 배열은 단일 데이터 유형의 고정된 수의 요소를 저장합니다.
  2. Oracle 명명된 컬렉션(컬렉션): 이는 다양한 데이터 유형의 요소를 보유할 수 있는 순서가 없고 크기 조정이 가능한 컨테이너입니다.

컬렉션을 사용하면 ID를 컨테이너에 로드한 다음 데이터베이스 테이블에서 조인 작업을 수행할 수 있습니다. 다음은 Oracle 명명 컬렉션을 사용하는 예입니다.

<code class="language-sql">VARIABLE cursor REFCURSOR;

DECLARE
  your_collection SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST();
BEGIN
  your_collection.EXTEND( 10000 );

  -- 填充集合。
  FOR i IN 1 .. 10000 LOOP
    your_collection(i) := DBMS_RANDOM.STRING( 'x', 20 );
  END LOOP;

  OPEN :cursor FOR
  SELECT t.*
  FROM   your_table t
         INNER JOIN
         TABLE( your_collection ) c
         ON t.id = c.COLUMN_VALUE;
END;
/

PRINT cursor;</code>
로그인 후 복사

Java 메소드

또는 Java 개발 기술이 있는 경우 Java를 사용하여 ID를 배열에 로드하고 이를 조인 작업을 수행하는 준비된 명령문에 매개변수로 전달할 수 있습니다.

<code class="language-java">import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.jdbc.OraclePreparedStatement;
import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;

public class TestDatabase2 {
    public static void main(String args[]){
        try{
            Class.forName("oracle.jdbc.OracleDriver");

            Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","username","password");

            String[] ids = { "1", "2", "3" };

            ArrayDescriptor des = ArrayDescriptor.createDescriptor("SYS.ODCIVARCHAR2LIST", con);

            PreparedStatement st = con.prepareStatement("SELECT t.* FROM your_table t INNER JOIN TABLE( ? ) c ON t.id = c.COLUMN_VALUE");

            // 将数组传递给过程 - 
            ((OraclePreparedStatement) st).setARRAYAtName( "your_collection", new ARRAY( des, con, ids ) );
            ResultSet cursor = st.executeQuery();

            while ( cursor.next() )
            {
                int id = cursor.getInt(1);
                double column1 = cursor.getDouble(2);
                double column2 = cursor.getDouble(3);

                System.out.println( String.format( "Id: %5d", id ) );
                System.out.println( String.format( "  Column1: %s", column1 ) );
                System.out.println( String.format( "  Column2: %s", column2 ) );
            }
        } catch(ClassNotFoundException | SQLException e) {
            System.out.println(e);
        }
    }
}</code>
로그인 후 복사

컬렉션이나 Java 프로그래밍을 활용하면 테이블 생성이나 편집 권한 없이도 많은 수의 문자열을 데이터베이스 테이블과 효율적으로 일치시킬 수 있습니다.

위 내용은 테이블 생성 권한 없이 데이터베이스에 대해 많은 문자열을 효율적으로 일치시키는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿