sql >> Database >  >> RDS >> Database

Tabelfiltering in IRI Workbench

IRI Workbench biedt een aantal functies voor het werken met meerdere tabellen in een database. Het bevat wizards voor:profieldatabases; kolommen classificeren; subset, maskeer en migreer gegevens; testgegevens genereren; enz.

Tools in IRI Workbench kunnen helpen selecteren welke tabellen beschikbaar zijn voor die wizards, evenals in een bepaald relatiediagram, of in het scannen van tabellen op patronen of verzamelingen van gevoelige waarden. Met te veel tabellen in een database kan het overweldigend zijn om alle data en metadata te visualiseren, selecteren en scannen. Een oplossing voor dit probleem met gegevensoverbelasting is het filteren van de tabellen die op een bepaald moment zichtbaar zijn.

Filters

Het is gemakkelijker om met kleinere sets tabellen tegelijk te werken. Meestal is een paar honderd gerelateerde tabellen tegelijk een redelijk aantal. Gelukkig is er een mechanisme binnen IRI Workbench om de lijst met getoonde tabellen te beperken met behulp van een filter.

Tabellen die worden uitgefilterd, worden uitgesloten van de lijst in de Data Source Explorer, de hoofdweergave van de databasestructuur. Ze verschijnen ook niet in de selectielijsten in wizards en worden overgeslagen tijdens schemabrede gegevensscans, waardoor de classificatie van moeilijk te vinden gegevens wordt versneld. Door het aantal tabellen terug te brengen tot een logische set, met een beheersbare hoeveelheid gegevens, wordt het voor de gebruiker gemakkelijker om zich op de taak te concentreren. Er kunnen meerdere verbindingsprofielen worden gemaakt om alleen die tabellen weer te geven die betrekking hebben op een bepaalde taak.

Eenvoudig filteren op tabelnaam is een ingebouwde functie van het Eclipse Data Tools Platform (DTP)-project, dat wordt gebruikt voor databasetoegang in IRI Workbench. Het kan echter alleen worden gebruikt om tabelnamen te specificeren die wel of niet beginnen met, bevatten of eindigen met bepaalde tekenreeksen. Er zijn momenten waarop een meer geavanceerde aanpak nodig is.

Met DTP kan ook een lijst met tabelnamen worden geselecteerd voor opname of uitsluiting, per schema. Dit houdt in dat alle tabelnamen in een wizardpagina worden geladen en vervolgens een vinkje wordt toegepast op alle tabelnamen die moeten worden opgenomen of uitgesloten. Dit werkt goed voor kleine aantallen tafels, maar wordt al snel onhandelbaar wanneer de lijst met tabellen groeit tot duizenden of zelfs tienduizenden.

Er is een relatief eenvoudige work-around die tabelselectie op naam mogelijk maakt, gebaseerd op een externe lijst die door de gebruiker wordt aangeleverd. Deze lijst kan worden gegenereerd door een externe tool of als resultaat van een SQL-query. Bij wijze van voorbeeld zal dit bericht stap voor stap laten zien hoe dit kan worden bereikt.

Maak een lijst met tabellen

Er kunnen veel verschillende querymethoden worden gebruikt om de tabellijst samen te stellen. Een handige methode is om alle tabellen met nul gegevensrijen eruit te filteren. In dit specifieke voorbeeld wordt echter een SQL-query gebruikt om een ​​lijst met tabellen te extraheren die in het filter moeten worden opgenomen op basis van overeenstemming met de tabelnamen. De lijst met geselecteerde tabellen is kort, zodat het voorbeeld gemakkelijker te volgen is. Dezelfde techniek werkt om tabellen te filteren op basis van een veel langere lijst.

De tabellen van belang in dit voorbeeld hebben twee formaten, ze beginnen met de letter D, gevolgd door een willekeurig teken, en dan een onderstrepingsteken, of ze beginnen met de tekenreeks "IRI_". Elk patroon kan dan worden gevolgd door een willekeurig aantal extra tekens.

Het onderstrepingsteken is met opzet gekozen als een interessant teken, omdat in de gestructureerde querytaal (SQL) het onderstrepingsteken een enkel jokerteken vertegenwoordigt. Daarom is het gebruik van een onderstrepingsteken in een DTP-filterexpressie of een SQL-instructie niet eenvoudig.

Dit voorbeeld is gebaseerd op een Oracle-database en laat zien hoe u het onderstrepingsteken kunt escapen, zodat het letterlijk in de waar-clausule van een query kan worden gebruikt. De zoekopdracht die een tabellijst oplevert die aan de bovenstaande criteria voldoet:

SELECT TABLE_NAME
  FROM ALL_TABLES 
  WHERE ( 
    TABLE_NAME LIKE 'D_\_%' ESCAPE '\' OR 
    TABLE_NAME LIKE 'IRI\_%' ESCAPE '\' 
  ) 
  AND OWNER LIKE 'SCOTT'
;

Let op het gebruik van de backslash om te ontsnappen aan het onderstrepingsteken waar het letterlijk moet worden geïnterpreteerd. Deze query kan worden uitgevoerd vanuit een SQL Scrapbook bestand in IRI Workbench. De resultaten worden weergegeven in de SQL-resultaten kijkvenster. Klik met de cursor in de SQL Scrapbook-bestandseditor met de rechtermuisknop voor het contextmenu en selecteer Alles uitvoeren .

De query moet ook afzonderlijk worden uitgevoerd voor elk ander schema (OWNER) waarvoor een gefilterde tabellijst nodig is. Queryresultaten voor verschillende schema's worden gescheiden gehouden en op dezelfde manier verwerkt.

De resultaten zijn zichtbaar op de Resultaat 1 tabblad in de SQL-resultaten weergave. Selecteer in het contextmenu van die weergave Exporteren> Huidig ​​resultaat . In het volgende dialoogvenster exporteert u het resultaat naar de projectmap in de werkruimte als een CSV-bestand.

Tabellijst naar importbestand verbindingsprofiel

Eclipse DTP biedt een mechanisme voor het importeren en exporteren van een of meer databaseverbindingsprofielen van of naar een speciaal gedefinieerd XML-bestand. De procedure hier is om eerst het CSV-bestand voor te bereiden voor invoeging in het importbestand, vervolgens het verbindingsprofiel dat wordt gefilterd te exporteren en ten slotte het exportbestand te wijzigen met de lijst met tabelnamen als filtervoorwaarde.

Open het CSV-gegevensbestand in de IRI Workbench-teksteditor. Het CSV-bestand wordt niet precies geformatteerd zoals het nodig is. Verwijder eerst de allereerste rij met de kolomkop. Vervolgens moeten de tabelnamen worden omlijst door enkele aanhalingstekens in plaats van dubbele aanhalingstekens, en een komma moet elke naam scheiden.

Druk op Ctrl+F om de Find/Replace . te openen dialoog. Voer de volgende patronen in voor F ind: ^”(.*)”$ en R e plaats met: ‘\1’, en selecteer de Gewone e x pressies optie. Druk op de Vervang A zal knop en sla het bestand op. Het tabellijstbestand is nu klaar voor gebruik in het importbestand.

De volgende stap is het voorbereiden van een export van het databaseverbindingsprofiel zonder dat het tabelnaamfilter is toegepast. De knop voor het exporteren van verbindingsprofielen bevindt zich in de Gegevensbronverkenner werkbalk bekijken. Het ziet eruit als een mand met een pijl die naar boven en naar rechts wijst. Plaats een vinkje naast het verbindingsprofiel dat het filter nodig heeft en geef een bestandsnaam op met de extensie .xml in de projectwerkruimte. Zorg er ook voor dat u het vinkje bij Bestandsinhoud versleutelen . uitschakelt voordat u het bestand opslaat.

Open het XML-exportbestand in de IRI Workbench. Klik op de Bron tabblad onderaan het XML-editorvenster. Druk op Shift+Ctrl+F om de XML op te maken in meerdere regels, zodat het gemakkelijker te bewerken is. Bijna bovenaan, net binnen het profiel tag, is een regel met de attributen id en naam .

Ga naar een website zoals https://www.guidgen.com/ en genereer een nieuwe GUID om de waarde in de id te vervangen attribuut. Bewerk de naam attribuut om het woord 'gefilterd' of een andere indicator toe te voegen die het nieuwe verbindingsprofiel identificeert.

Hieronder ziet u een voor en na weergave van het voorbeeld verbindingsprofiel:

Voor:

Na:

Zoek vervolgens de regel met:

<org.eclipse.datatools.connectivity.sqm.filterSettings />

Als er zich al aanvullende elementen in de tag bevinden, betekent dit dat er al filters zijn toegepast op schema's in het verbindingsprofiel. Ze kunnen op hun plaats blijven en er kunnen nieuwe tabelfilters worden ingevoegd voor extra schema's.

Anders kunnen de eigenschappen van het verbindingsprofiel worden bewerkt om ze te verwijderen voordat ze opnieuw worden geëxporteerd. De bovenstaande regel moet worden vervangen door het volgende:

<org.eclipse.datatools.connectivity.sqm.filterSettings>
  <property name="::SCOTT::DatatoolsTableFilterPredicate" 
  value="IN()" />
</org.eclipse.datatools.connectivity.sqm.filterSettings>

Ga terug naar het bewerkte CSV-gegevensbestand met de lijst met tabellen. Selecteer alle tekst en kopieer deze naar het klembord. Keer terug naar het XML-bestand en plak de inhoud van het klembord direct tussen de haakjes in de tekst er direct boven. Merk op dat als de naam van het schema (OWNER) in de eigenschap . staat tag, moet deze worden gewijzigd zodat deze overeenkomt met de naam van het schema dat wordt gefilterd.

Als er extra schema's met tabellijsten zijn, herhaalt u de stappen om extra eigenschap toe te voegen labels. Als een tabellijst moet worden uitgesloten in plaats van opgenomen, voeg dan het trefwoord NOT . in voor het woord IN . De resulterende XML in dit eenvoudige voorbeeld wordt hieronder getoond. In een meer gecompliceerde database kunnen er duizenden regels met tabelnamen zijn. Als alle bewerkingen zijn voltooid, selecteert u Bestand> Opslaan als... en sla het bestand op onder een nieuwe naam.

Importeer het gefilterde verbindingsprofiel

Het nieuw gemaakte XML-bestand met het gefilterde verbindingsprofiel kan worden geïmporteerd, waardoor een nieuwe kopie van het geëxporteerde profiel wordt gemaakt, waarbij filtering is toegepast. De knop voor het importeren van verbindingsprofielen bevindt zich in de Gegevensbronverkenner werkbalk bekijken, net links van de exportknop. Het ziet eruit als een mand met een pijl die naar beneden en naar rechts wijst. Blader naar het XML-bestand dat is gewijzigd met de tabellijst. Als er al een profiel met dezelfde naam bestaat, vink dan het vakje aan om het te overschrijven.

Als u ten slotte het verbindingsprofiel opent en naar het gefilterde schema navigeert, worden alleen die tabellen weergegeven die in de lijst staan:


  1. Filteren op OFFSET-FETCH-opties in Select-query - SQL Server / TSQL-zelfstudie, deel 118

  2. Hoe PostgreSQL in een Docker-container te controleren:deel één

  3. Een lijst met geldige tijdzones retourneren in Oracle Database

  4. Hoe SQLite Lower() werkt