2014-09-26 94 views
23

我有一個tsv(製表符分隔文件),我想用sqlite3導入。有人知道一個明確的方法來做到這一點嗎?如何使用SQLite3導入tsv文件

我已經安裝了sqlite3,但尚未創建任何數據庫或表。

我試着命令

.import /path/filename.tsv my_new_table 

,但它給我的錯誤:沒有這樣的表:my_new_table。

但是,從我讀的它應該自動創建表,如果它不存在。這是否意味着我需要首先創建和使用數據庫,或者是否有另一個將.tsv文件導入到sqlite的技巧?

回答

20

您應該創建表格,設置分隔符並導入數據sqlite wiki

示例TSV:

data.tsv(標籤作爲分隔符):

Bob 30 1000 
Wendy 20 900 

1)創建一個表,並設置TAB作爲分隔符:

sqlite> create table people (name text, param1 int, param2 int); 
sqlite> .separator "\t" 

2)導入數據:

sqlite> .import data.tsv people 

,其結果是:

sqlite> select * from people; 
Bob 30 1000 
Wendy 20 900 
+0

謝謝!簡單而高效。 – bsuire 2014-09-28 22:04:08

+0

2016年的感謝。 – Anekdotin 2016-10-15 18:33:48

+1

請注意,使用'.separator「\ t」'意味着sqlite仍然會使用csv樣式來解釋引號,這可能不是您想要的。更好的選擇是使用adius答案中描述的「tabs」模式。 – Miles 2017-06-19 08:28:18

33

其實是有導入製表符分隔的文件專用模式:

sqlite> .mode tabs 
sqlite> .import data.tsv people 

此外,如果您在您的TSV文件標題行,你可以讓SQLite的自動創建桌子。 只需在導入過程中使用未使用的表名並將tsv文件更改爲:

name param1 param2 
Bob 30 1000 
Wendy 20 900 
+2

這真的是最好的答案。謝謝@adius – 2016-02-21 21:37:56

+2

不要在導入語句的末尾放一個分號,就像我做的那樣:) – 2016-08-22 22:02:23