sql >> Databasteknik >  >> RDS >> SQLite

SQLite - Importera data från en CSV-fil

Du kan importera data från en CSV-fil till en SQLite-databas.

För att importera data till SQLite, använd .import kommando. Detta kommando accepterar ett filnamn och ett tabellnamn.

Filnamnet är filen från vilken data läses, tabellnamnet är den tabell som data kommer att importeras till. Om tabellen inte finns skapas den automatiskt, baserat på data i CSV-filen.

CSV till ny tabell

Det här exemplet importerar innehållet i en CSV-fil till en tabell som för närvarande inte finns. Därför kommer en ny tabell att skapas baserat på data i CSV-filen.

Vi använder samma CSV-fil som vi exporterade tidigare.

.mode csv
.import /Users/quackit/sqlite/dumps/catalog.csv Catalog

Se till att använda .mode csv före .import eftersom detta förhindrar kommandoradsverktyget från att försöka tolka indatafilens text som något annat format.

När vi har kört det kan vi köra en .tables kommando för att granska våra tabeller:

sqlite> .tables
Albums   Albums2  Artists  Catalog

Den nya tabellen ( Katalog ) Har skapats. Låt oss göra en SELECT på den för att kontrollera innehållet:

sqlite> .mode column
sqlite> SELECT * FROM Catalog;
AlbumId   AlbumName             ArtistName  
--------  --------------------  ------------
1         Killers               Iron Maiden 
2         Powerslave            Iron Maiden 
12        Somewhere in Time     Iron Maiden 
3         Surfing with the Ali  Joe Satriani
10        Flying in a Blue Dre  Joe Satriani
11        Black Swans and Worm  Joe Satriani
6         Out of the Loop       Mr Percival 
7         Suck on This          Primus      
8         Pork Soda             Primus      
9         Sailing the Seas of   Primus

Du kanske också vill ändra läget tillbaka till column (eller vilket annat läge du än använde) som jag gjorde här.

Och låt oss också kontrollera schemat:

sqlite> .schema Catalog
CREATE TABLE Catalog(
  "AlbumId" TEXT,
  "AlbumName" TEXT,
  "ArtistName" TEXT
);

Befintlig tabell

Du kan också importera CSV-filen till en befintlig tabell. Skapa bara tabellen med lämpliga definitioner och kör sedan importen.

Se dock till att ta bort alla rubriker från CSV-filen först. När du importerar till en befintlig tabell, varje rad i CSV-filen läses in som en rad i tabellen. Så om du inkluderar rubrikraden kommer den att bli den första dataraden i din tabell.

Vi kommer nu att skapa en ny tabell som heter Genres och fyll i den från en CSV-fil.

Här är innehållet i CSV-filen:

1,Rock
2,Country
3,Pop
4,Comedy
5,Jazz
6,Blues
7,Techno

Skapa den nya tabellen:

CREATE TABLE Genres(
  GenreId    INTEGER PRIMARY KEY, 
  Genre      TEXT NOT NULL
);

Kontrollera att den finns där:

sqlite> .tables
Albums   Albums2  Artists  Catalog  Genres 

Importera nu CSV-filen:

.mode csv
.import /Users/quackit/sqlite/dumps/genres.csv Genres

Verifiera nu att data gick in (och ändra tillbaka till column läge):

sqlite> .mode column
sqlite> SELECT * FROM Genres;
GenreId   Genre               
--------  --------------------
1         Rock                
2         Country             
3         Pop                 
4         Comedy              
5         Jazz                
6         Blues               
7         Techno             

  1. SQLite JSON_QUOTE()

  2. SQL Server 2017 steg för steg installation -1

  3. Ska jag använda datatypen datetime eller timestamp i MySQL?

  4. Delad funktion motsvarande i T-SQL?