I'm trying to get my data files (of which there are a dozen or so) into tables within SQLite. Each file has a header and I'll be receiving them a few times over the coming year so I'd like to:
I define my table and import data...
> .separator "\t"
> .headers on
> CREATE TABLE clinical(
patid VARCHAR(20),
eventdate CHAR(10),
sysdate CHAR(10),
constype INT,
consid INT,
medcode INT,
staffid VARCHAR(20),
textid INT,
episode INT,
enttype INT,
adid INT);
> .import "Sample_Clinical001.txt" clinical
> SELECT * FROM clinical LIMIT 10;
patid eventdate sysdate constype consid medcode staffid textid episode enttype adid
patid eventdate sysdate constype consid medcode staffid textid episode enttype adid
471001 30/01/1997 09/03/1997 4 68093 180 0 0 0 20 11484
471001 30/01/1997 09/03/1997 2 68093 60 0 0 0 4 11485
My first thought was to DELETE the offending row, but that didn't work as expected, instead it deleted the whole table...
> DELETE FROM clinical WHERE patid = "patid";
> SELECT * FROM clinical LIMIT 3;
>
Did I get the syntax for testing equality wrong? I'm not sure; the docs don't seem to distinguish between the two. I thought I'd try again ...
> .import "Sample_Clinical001.txt" clinical
> SELECT * FROM clinical LIMIT 3;
patid eventdate sysdate constype consid medcode staffid textid episode enttype adid
patid eventdate sysdate constype consid medcode staffid textid episode enttype adid
471001 30/01/1997 09/03/1997 4 68093 180 0 0 0 20 11484
471001 30/01/1997 09/03/1997 2 68093 60 0 0 0 4 11485
> DELETE FROM clinical WHERE patid == "patid";
> SELECT * FROM clinical LIMIT 3;
>
Am I even on the correct track here or am I doing something stupid?
I would have expected there to be an easy option to skip the header row when calling .import
as having header rows in text files is a fairly common situation.
First, from the menu choose tool menu item. Second, choose the database and table that you want to import data then click the Next button. Third, choose CSV as the data source type, choose the CSV file in the Input file field, and choose the ,(comma) option as the Field separator as shown in the picture below.
You can import a CSV file into SQLite table by using sqlite3 tool and . import command. This command accepts a file name, and a table name.
patid
is a column name."patid"
is a quoted column name.'patid'
is a string.
The condition WHERE patid = "patid"
compares the value in the patid
column with itself.
(SQLite allows strings with double quotes for compatibility with MySQL, but only where a string cannot be confused with a table/column name.)
This worked for me:
.read schema.sql
.mode csv
.import --skip 1 artist_t.csv artist_t
or if you just have one file to import, you can do it like this:
.import --csv --skip 1 artist_t.csv artist_t
https://sqlite.org/cli.html#importing_csv_files
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With