menu

arrow_back Hvordan automatisere SQL-spørringer mot databaser?

av
(423 poeng) 1 3 11
i Programvare
581 visninger
0 stemmer

Hvordan og hvilke verktøy kan vi bruke til å automatisere spørringer mot databaser?

Følgende verketøy er i start testing:

DBeaver
- DBeaver @Export <= Hvordan få kjørt automatisering her?

KDRS Query
- Siste publiserte v0.9 håndterer ikke godt nok enda SQL-spørringer
- Det arbeides med en oppdatering som kan kjøre mange SQL-spørringer på en gang fra en tekstfil

Eksempler for SQL-query mot en ephorte Noark 4-database

-- N4.04.01 Antall rader i tabell journpost
select concat ('N4.04.01 Antall rader i journpost: ', cast( (select count(*) from journpost) as char) );

-- N4.04.02 Antall journalposter per status
select JP_STATUS_JS, count(*) from journpost group by JP_STATUS_JS order by JP_STATUS_JS;

-- N4.04.03 Antall journalposter per arkivdel
select SA_ARKDEL_AD, count(*) from journpost join noarksak on JP_SAID=SA_ID group by SA_ARKDEL_AD order by SA_ARKDEL_AD;

-- N4.04.04 Antall journalposter per aar
select JP_JAAR, count(*) from journpost group by JP_JAAR order by JP_JAAR;

En test med DBeaver @Export som feilet
- Link til spec for @Export over forteller ikke hvordan man får kjørt dette
- Noen som vet hvordan det kan kjøres på korrekt måte slik at man kan kjøre mange SQL i en kjøring og lagre resultatene ut til filer?

@export { "type": "csv", "producer": { ... }, "consumer": { ... }, "processor": { ... } }
select * from arkiv order by AR_ARKIV;

2 Kommentarer

0
Du kan f.eks bruke stored procedures.
0
Eksempler f. eks. i MySQL mottas med takk (som svar til spørsmål i så fall, ikke kommentar).

2 Svar

Akseptert svar
1 stemme
 
Akseptert svar
DROP procedure CheckN4;

/* Etter oppretting, startes prosedyra: call CheckN4(); */

DELIMITER //

CREATE PROCEDURE CheckN4() 

BEGIN
/* N4.04.01 Antall rader i tabell journpost */
select concat ('N4.04.01 Antall rader i journpost: ', cast( (select count(*) from journpost) as char) );

/* N4.04.02 Antall journalposter per status */
select JP_STATUS_JS, count(*) from journpost group by JP_STATUS_JS order by JP_STATUS_JS;

/* N4.04.03 Antall journalposter per arkivdel */
select SA_ARKDEL_AD, count(*) from journpost join noarksak on JP_SAID=SA_ID group by SA_ARKDEL_AD order by SA_ARKDEL_AD;

/* N4.04.04 Antall journalposter per aar */
select JP_JAAR, count(*) from journpost group by JP_JAAR order by JP_JAAR;
END //

DELIMITER ;
av
(110 poeng) 1 6
akseptert av
Akseptert svar
1 stemme

Jeg bruker DBvisualizer. Jeg dokumenterer script som lagres og disse kan gjenbrukes. Hva som skal gjøres/spørres om, - når er mer en intellektuell oppgave og den kan i svært liten grad automatiseres. sql kan alltids batch kjøres ved behov, eller gitte tider. Ulike database motorer løser dette via prosedyrer, funksjoner, triggere, "schedules". Men du spør ikke om dette, gjør du?

Du spør om konkret hjelp med export commando ifra DBeaver?

https://github.com/dbeaver/dbeaver/wiki/Export-Command

Du må sette de rette attributtene for hva du ønsker ihenhold til hva du ønsker å få eksportert ut, sql setningen etterpå er for å hente data, oppsettet spesifisert

av
(42 poeng) 1 1 6

2 Kommentarer

0
Jeg skal se nærmere på DbVisualizer https://www.dbvis.com
- Kan du dele et eksempel på script i det formatet den tar mot en database?

Angående hva som skal spørres om så tok jeg utgangspunkt i validering av system, så da vil jo det være faste spørringer som kan brukes hver gang (ev. med noen justeringer). F. eks. for ephorte, kontor 2000 osv som fagsystem kan vi telle opp fra arkivdel, sak, journalpost, dokumenter med alt fra antall oppføringer,  antall ulike typer og statuser av elementene, antall pr. år osv. Det samme vil være for f. eks. fagsystem, som BVPro barnevernsystem, vi kan telle opp antall informasjonselementer av ulike typer og kategorisere det som er relevant for å dokumentere informasjonsmengde og innhold.

Konkrete innsynsforespørsler mot systemene i etterkant kan bli mer spesialiserte, men har man kunnskap om informasjonselementene, så kan man lage faste spørringer som søker etter person, tittel, datoer osv., eller så bare gjøre et fullt fritekstsøk hele basen.

Den lenken til DBeaver og Export kommando lister opp alle attributter, men spørsmålet mitt er hvordan jeg får kjørt dette fra en fil eller i vindu i DBeaver. Jeg ønsker jo å kjøre alle spørringer i en batch, og ikke manuelt kalle opp en og en linje som jeg gjør no manuelt (og som fungerer fint nok, dog uten automatisert kjøring og lagring til fil).

Legger til at info sier at hele SQL kall inklusiv @export foran med sine json må ligge på 1 linje av tekniske årsaker. Jeg får ikke til å få noe output av noen kjøringer her, så et praktisk eksempel som virker hadde vært fint på nettsiden deres og/eller her i dette forumet.
0
DBVisualizer krever Pro-lisens for å kjøre script med mange SQL og lagre resulat til fil
 - Per User, First Year $197 / 2nd year, onwards $69

https://confluence.dbvis.com/display/UG140/@export+-+Export+query+result

@export - Export query result
 - This feature is only available in the DbVisualizer Pro edition.

Instead of viewing and exporting query results from Result Set grids, you can export the result of one or more queries to a file from a script. For very large results, this may be the preferred choice due to memory constraints.

Velkommen!

Søk etter svar, still spørsmål og bidra med kunnskap sammen med norges felleskap på felter som arkiv, konservering og formidling. Alle er velkomne som medlemmer! Her er terskelen for å spørre veldig lav.


Kunngjøringer :

Artikkelmodulen vil snart bli tilgjengelig!