PostgreSql -kopi fra stdin

PostgreSql -kopi fra stdin
PostgreSQL som andre databasestyringssystemer støtter standardstrømmene. Disse strømmene er ansvarlige for å manipulere data for lagring i PostgreSQL. Dette er inngangs- og utgangskanalene for kommunikasjon mellom applikasjonen og miljøet som opprettes på utførelsestidspunktet.

Hver gang vi utfører en kommando i PostgreSQL, gjør strømningene forbindelsen med tekstterminalen der PSQL (Shell) kjører. I tilfelle av arv, arver imidlertid hvert barns prosess strømmer fra foreldreprosessen. Ikke alle program. Strømmer ligger i kategorien 3.

Stdin: Det er en standard inngangsstrøm. Det brukes der programmet leser inndataene.

Stdout: Dette innebærer standardutgangsstrømmen som brukes når applikasjonen skriver dataene (utgangen) til filen.

Stderr: Denne strømmen refererer til feilene i applikasjonen. Dette brukes til å vise eller varsle brukeren om forekomsten av en feil under utførelsen.

Den vanlige syntaksen for disse tre typene er:

Fil *stdin;
Fil *stdout;
Fil *stderr;

Standardinngang blir lest av inngangsenheten "tastatur", mens standardutgang og standardfeil vises på skjermbildet for utgangsenhet. De to første strømmene brukes til å hente og vise dataene med enkle ord, men den tredje brukes stort sett når vi trenger å diagnostisere feilene. Jeg snakker om unntakshåndtering på programmeringsspråk.

Standardinngang (STDIN):

Mens du lager en kildekode, er de fleste funksjoner avhengig av STDIN -strømmen for inngangsfunksjonen. Men noen programmer som DIR og LS-programmer krever ikke denne funksjonaliteten, da de tar kommandolinjeargumentene. Denne situasjonen skjer når programmet er avhengig av systemet for inngangen, men ikke samhandler med brukeren. For eksempel krever ikke programmene relatert til katalogen og stiene innspill for å bli utført.

Hver fil som er under utførelsesprosessen blir tildelt et unikt nummer av systemet. Dette kalles en filbeskrivelse. For standardinngangen er verdien av filbeskrivelsen “0”. På C -programmeringsspråk har filbeskrivelsen variabel fil * stdin, på samme måte for C ++ språk. Variabel er definert som STD :: CIN.

Stdin i PostgreSql

Etter installasjonen og konfigurasjonen av databasen, for tilkoblingen med serveren, må du oppgi et passord for å fortsette videre. Disse tiltakene er for godkjenning av brukeren.

Kopier data fra stdin til en tabell

For å erkjenne mekanismen til STDIN, må vi lage en dummy -tabell. Slik at vi kan lese og kopiere dataene fra en fil til en annen ved å innlemme STDIN.

>> Opprett bordskole (ID int, navn varchar (10), adresse varchar (20), emne varchar (20));

Når tabellen er opprettet, vil vi legge til verdiene i tabellen ved å bruke en innsats -kommando. Legg til noen eksempeldata i få rader, hvile vil bli lagt til ved å bruke "stdin".

>> Sett inn skoleverdier (1, 'Ahmad', 'Lahore', 'Sciences'), (2, 'Shazain', 'Islamabad', 'Arts'), (3, 'Zain', 'Karachi', ' vitenskap ');

Annet enn "Sett inn" -uttalelsen, eksisterer det et alternativ for å laste inn verdiene i tabellen. Dette er gjennom "stdin". I PostgreSQL oppgir vi data i tabellen fra terminalen med radmessig ved hjelp av en avgrensning. Denne avgrenseren er en separator mellom verdiene til to kolonner på en rad. Denne avgrenser kan være et rom, komma eller et tomt i alle fall i alle fall. Men ved bruk av en avgrenser som stdin, anbefales CSV (komma-separerte verdier). Og ingen andre symbol er referert til her. Et nøkkelord 'kopi' brukes som vil kopiere dataene fra PSQL -skjermen til tabellen spesielt.

>> kopier skole fra stdin (avgrensning ',');

Når du bruker spørringen, nevnes noen instruksjoner for plassering av data her. Dette er poengene for å veilede brukeren slik at du må kunne legge inn data riktig. Hver rad skal legges inn i en ny linje.

Vi vil gå steg for steg her. Hver verdi skrevet før eller mellom kommaene representerer hver kolonne. Som det er 4 kolonner slik at 4 verdier brukes som CSV. Skriv inn den første raden og trykk deretter på fanen.

Når en rad er fullført, vil du bli flyttet mot neste rad. Uansett hvor mange rader du vil legge til, akkurat som en innsatserklæring, vil alle ubegrensede data bli plassert inne i tabellen. Kommer tilbake til eksemplet, nå har vi skrevet den andre raden og fortsett til neste.

Vi har brukt 2 rader for å demonstrere. Faktisk innsetting vil ta data opp til kravets merke. Hvis du er ferdig med å legge til rader i tabellen og vil slutte med denne mekanismen, vil du sikkert bruke en slutt på filen (EOF).

Du må pakke sammen å legge til data med en tilbakeslag (\) og en periode (.) på den siste linjen når du ikke vil legge til ytterligere rader.

La oss nå se et ferdigstilt blikk på hele koden fra spørringen til EOF. På slutten indikerer “Copy 3” at 3 rader legges til i tabellen.

Merk: EOF -operatøren er ikke lagt til som et symbol i den nye raden i tabellen.

Fortsett å legge til data gjennom "stdin" i henhold til kravet. Du kan sjekke dataene du har satt inn gjennom SELECT -setningen.

>> Velg * fra skolen;

Kopier data fra en tabell til stdin

Hvis du er interessert i å kopiere dataene i en tabell fra tabellen, bruker vi stdin til det. Det er ikke mulig å direkte kopiere den ene tabellen til den andre i PostgreSQL .

Lag en prøve tabell for å kopiere alle dataene fra tabellen (skole). Man bør være klar over å legge til kolonnens data, type som ligner på den målrettede tabellen.

Legg nå til dataene fra den filen ved å bruke den samme STDIN -uttalelsen om en kopi. Dataene kan være de samme, eller du kan endre dem ved å legge til en ny rad som ikke var til stede i den opprinnelige tabellen.

>> Kopier School_Copy fra stdin (delimeter ',')

Bruk en SELECT -setning for å få inn dataene.

Output ved hjelp av stdout i stedet for valgt setning

Når vi bruker STDIN -alternativ til innsatserklæringen. Tilsvarende brukes stdout i stedet for den utvalgte uttalelsen. Representasjonen er ikke i form av en tabell. For utgangsformålet er avgrenseren som brukes “|”. Denne avgrenser blir automatisk plassert mellom kolonnene i hver rad.

>> kopier skole_copy til stdout (avgrensning '|');

Oppstå feil mens du bruker avgrensere
Avgrensning '|'

Hvis du bruker en avgrensning '|' I erstatning av CSV vil det føre til en feil. Dette vil ikke kopiere dataene fra terminalen og forårsaker en syntaksfeil.

Konklusjon

'PostgreSql -kopi fra stdin' bistår med å duplisere data fra en tabell til en annen. I denne artikkelen ga vi deg først en introduksjon av standardstrømmer, stdin, det fungerer, teoretisk fulgt av den korte forklaringen av eksemplene. Et konkurransefortrinn av stdin over innsatserklæring er at hvis en rad hoppet over. Med veiledning av denne opplæringen, vil du kunne kopiere innholdet i tabeller.