Postgres Bulk Insert

Postgres Bulk Insert



En bulkinsert är en process som lägger till flera rader med data till en tabell i en enda operation. Detta kan vara mycket snabbare än att infoga en rad i taget, särskilt när man hanterar stora mängder data.

Den vanligaste metoden för att utföra en massinsättning i PostgreSQL är kommandot COPY som kan ta data från en fil eller standardinmatning och infoga den i en tabell. Kommandot COPY kräver att data ska vara i ett specifikt format, vanligtvis en CSV- eller textfil.

Låt oss utforska hur man använder det här kommandot för att utföra en bulkinfogning i PostgreSQL.







PostgreSQL Bulk Insert

Låt oss utforska stegen för att utföra en bulkinsert i PostgreSQL.



Förbered dina data

Innan du utför en massinsättning, se till att måldata är i lämpligt format. Vi rekommenderar att du konfigurerar dina data i CSV eller TSV. Du kan strukturera måldata i rader och kolumner som är åtskilda med kommatecken eller tabb.



Anslut till PostgreSQL

Anslut sedan till din PostgreSQL-databas med din önskade klient. För den här handledningen använder vi PSQL-verktyget för enkel användning och universell åtkomst.





$ psql -I postgres -d < Databas namn >

Du kan till exempel köra följande fråga för att använda databasen user_information:

$ psql -I postgres -d användar information

Om du inte har måldatabasen kan du skapa den med kommandot CREATE DATABASE:



SKAPA DATABAS < db_name >

Skapa en tabell

Därefter måste vi se till att tabellen där vi vill infoga data finns. Tabellstrukturen måste matcha datastrukturen inklusive de datatyper som stöds.

Om tabellen inte finns kan du använda kommandot CREATE TABLE:

CREATE TABLE network_users (
id SERIAL PRIMÄR NYCKEL,
användarnamn VARCHAR ( 255 ) INTE NULL,
ip_adress INET,
mac_adress MACADDR,
mima TEXT
) ;

Det givna kommandot ska skapa en tabell som heter 'nätverksanvändare' med kolumnerna id, användarnamn, ip_address, mac_address och mime.

När tabellen är klar kan vi ladda data till PostgreSQL-tabellen. Återigen är det bra att se till att datafilen är tillgänglig från maskinen där servern körs.

Utför Bulk Insert

Därefter kan vi använda kommandot COPY för att ladda data från filen till databastabellen. Kommandosyntaxen är som följer:

COPY tabellnamn ( kolumn1, kolumn2, kolumn3 )
FRÅN 'sökväg/till/datafil'
MED ( FORMAT csv | text, AVGRÄNSNING 'avgränsare' , HUVUD ) ;

Du kan ange formatet (CSV eller text), avgränsaren som används i din fil (t.ex. ',' för CSV, '\t' för TSV) och om din fil innehåller en rubrikrad.

Till exempel, för att kopiera data till tabellen 'network_users', kan vi köra kommandot enligt följande:

kopiera nätverksanvändare ( id , användarnamn, ip_adress, mac_adress, mime ) från 'nätverksanvändare.
csv'
med ( format csv, avgränsare ',' , rubrik ) ;

Detta gör att PostgreSQL kan ladda data från filen till tabellen. Du kan verifiera om infogningen lyckades genom att fråga efter data i tabellen.

PostgreSQL Bulk Infoga PgAdmin

Vi kan också använda ett grafiskt gränssnitt som pgAdmin tillhandahåller för att importera en datafil.

Börja med att starta pgAdmin och anslut till din PostgreSQL-databas genom att ange nödvändiga anslutningsdetaljer.

Leta sedan upp tabellen där du vill utföra en massinsättning. Du kan hitta dina databaser och tabeller i webbläsarpanelen.

Högerklicka på tabellen och välj 'Importera/exportera'.

I guiden 'Importera/Exportera', välj alternativet 'Importera' och välj datakällans typ. Du kan till exempel importera en fråga eller urklipp från en fil.

I nästa steg anger du filinformationen för massinlägget. Välj filformat (CSV, TSV, för att ange sökvägen till din datafil och ställ in avgränsaren som används i filen.

När du är nöjd med dina filimportalternativ, klicka på 'Ok' för att starta importprocessen. Du bör se processstatus i den nedre högra rutan.

Du kan verifiera om importen lyckas genom att öppna frågeverktyget och köra frågan:

VÄLJ * FRÅN nätverksanvändare;

Produktion :

Slutsats

Vi undersökte hur man använder PSQL och pgAdmin för att utföra en massinsättning från en extern datafil till en PostgreSQL-databastabell.