Heim > Datenbank > MySQL-Tutorial > Wie kann man viele Zeichenfolgen effizient mit einer Datenbank abgleichen, ohne über Berechtigungen zur Tabellenerstellung zu verfügen?

Wie kann man viele Zeichenfolgen effizient mit einer Datenbank abgleichen, ohne über Berechtigungen zur Tabellenerstellung zu verfügen?

Patricia Arquette
Freigeben: 2025-01-19 14:52:10
Original
955 Leute haben es durchsucht

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

Effizientes Abgleichen einer großen Anzahl von Zeichenfolgen in der Oracle-Datenbank ohne Berechtigungen zur Tabellenerstellung

In Oracle SQL Developer müssen Sie möglicherweise eine große Anzahl von Zeichenfolgen mit der Datenbank abgleichen, verfügen jedoch nicht über die erforderlichen Berechtigungen zum Erstellen oder Bearbeiten von Tabellen. Diese Situation erfordert alternative Methoden, um den Matching-Prozess effizient durchzuführen.

Sammlungen verwenden

Eine Lösung besteht darin, Sammlungen zu verwenden, mit denen Sie temporäre Container zum Speichern von Datenwerten erstellen können. Oracle bietet zwei Arten von Sammlungen:

  1. Oracle Variable Arrays (VARRAYs): Diese Arrays speichern eine feste Anzahl von Elementen eines einzelnen Datentyps.
  2. Oracle Named Collections (Sammlungen): Dabei handelt es sich um ungeordnete, in der Größe veränderbare Container, die Elemente unterschiedlicher Datentypen enthalten können.

Mithilfe von Sammlungen können Sie Ihre IDs in einen Container laden und dann einen Join-Vorgang für die Datenbanktabelle durchführen. Hier ist ein Beispiel für die Verwendung benannter Oracle-Sammlungen:

<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>
Nach dem Login kopieren

Java-Methoden

Alternativ können Sie, wenn Sie über Java-Entwicklungskenntnisse verfügen, Java verwenden, um Ihre IDs in ein Array zu laden und sie als Parameter an die vorbereitete Anweisung zu übergeben, die den Join-Vorgang ausführt:

<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>
Nach dem Login kopieren

Durch die Nutzung von Sammlungen oder Java-Programmierung können Sie eine große Anzahl von Zeichenfolgen effizient Datenbanktabellen zuordnen, ohne dass Berechtigungen zum Erstellen oder Bearbeiten von Tabellen erforderlich sind.

Das obige ist der detaillierte Inhalt vonWie kann man viele Zeichenfolgen effizient mit einer Datenbank abgleichen, ohne über Berechtigungen zur Tabellenerstellung zu verfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage