2017-11-20 1 views
-1

Möchten Sie den besten Weg/Ansatz wissen Millionen von Datensätzen aus DB-Tabelle (Oracle 11)JDBC + ng-Gitter (AngularJS 1.4+) Paginierung Oracle 11 (Millionen von Datensätzen)

zu streamen habe ich versucht, einfach

  1. stmt.executeQuery() mit setFetchSize auf stmt, resultset usw., aber es hat keine Datensätze zurück, wenn Tabelle Millionen von Datensätzen

  2. versuchte mit Orakel ‚rownum‘ -Klausel hat, gibt nichts noch keine execption

  3. Es gibt Verfahren wie unter http://www.sqlines.com/postgresql-to-oracle/copy_export_csv_from_procedure

aber es braucht Dateipaket ...

Meine Frage ist es eine beste Ansatz so Millionen von Datensätzen von Back-End-UI zu streamen ???

wie die beste Möglichkeit, große (wie viel) in lokalen Speicher im Browser zu speichern? dies muss Speicher sichern, wie die Daten sind empfindlich?

Bitte helfen Sie mir dabei.

HINWEIS: ORM/JPA kann nicht als Tabelle Generation ist

Dank dynamisch verwendet werden!

+0

keine Ahnung warum jemand unten abgestimmt ... ??? :( – BaajiRao

Antwort

0

Nun, das ist, wie ich es gelöst haben ...

Schritt 1: Oracle gespeicherte Prozedur die Anzahl der ‚Seiten‘ basiert auszukommen nicht die gewünschte. der Datensätze/Seite

create or replace 
procedure sp_dynlkp_pages (pTable in varchar2, rowCnt out number) 
    as 

begin 
    EXECUTE IMMEDIATE 'select count(*) from ' || pTable into rowCnt;  
end; 

Schritt 2: Anzeige der Seitenzahlen sind Drop-Down und zur Auswahl der Seitenzahl von unten Feuer Rest Anruf mit Eingangsseitennummer

create or replace procedure sp_dynlkp_data_view (pTable in varchar2, pageNumber in number, pageSize in number, p_data_cursor out sys_refcursor) 
as 
    v_sql varchar2(4000); 
    v_sql1 varchar2(4000); 

begin 
    v_sql := ''; 
    for r in (select column_name from user_tab_cols where table_name = pTable)loop 
    -- decrypt fn 
    --v_sql := v_sql || 'f_decrypt(' || r.column_name ||', ' || dKey || ')' || ','; 
    v_sql := v_sql || r.column_name || ','; 
    end loop; 
    v_sql := rtrim(v_sql, ',');-- || ' from ' || pTable; --|| ' where rownum < ' || r_cnt; 

    v_sql1 := 'SELECT ' || v_sql || ' FROM 
    (
     SELECT a.*, rownum r__ 
     FROM 
     (select * from ' 
     || pTable 
     || ') a 
     WHERE rownum < ' || ((pageNumber * pageSize) + 1) 
    || ') 
    WHERE r__ >= ' || (((pageNumber-1) * pageSize) + 1); 
    --DBMS_OUTPUT.PUT_LINE(v_sql1); 
    open p_data_cursor for v_sql1;   
end; 

HINWEIS: On UI Front Ich benutze ng-Grid (wegen der Projektspezifikation), ihr könnt jede neue Feature-reiche UI-Grid-Komponente verwenden.

Verwandte Themen