2014-09-26 21 views
23

Tôi có tệp tsv (tab được phân tách) mà tôi muốn nhập bằng sqlite3. Có ai biết một cách rõ ràng để làm điều đó?Cách nhập tệp tsv bằng SQLite3

Tôi đã cài đặt sqlite3, nhưng không tạo ra bất kỳ cơ sở dữ liệu hoặc bảng được nêu ra.

Tôi đã thử lệnh

.import /path/filename.tsv my_new_table 

nhưng nó mang lại cho tôi những lỗi: không có bảng như: my_new_table.

Tuy nhiên, từ những gì tôi muốn đọc nó nên tạo bảng tự động nếu nó does't tồn tại. Nó có nghĩa là tôi cần phải tạo và sử dụng một cơ sở dữ liệu đầu tiên, hoặc là có một thủ thuật để nhập một tập tin .tsv vào sqlite?

Trả lời

20

Bạn nên tạo bảng, thiết lập thiết bị tách và nhập dữ liệu sqlite wiki.

Ví dụ cho TSV:

data.tsv (tab như một tách):

Bob 30 1000 
Wendy 20 900 

1) Tạo một bảng và thiết lập TAB như một tách:

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

2) Nhập dữ liệu :

sqlite> .import data.tsv people 

Và kết quả là:

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

thanks! Đơn giản và hiệu quả. – bsuire

+0

Cảm ơn từ năm 2016. – Anekdotin

+1

Lưu ý rằng bằng cách sử dụng '.parparator" \ t "' có nghĩa là sqlite sẽ vẫn sử dụng các quy tắc kiểu csv để diễn giải dấu ngoặc kép, có thể không phải là thứ bạn muốn. Một lựa chọn tốt hơn là sử dụng chế độ 'tab' được mô tả trong câu trả lời của adius. – Miles

33

Có thực sự là một chế độ dành riêng cho nhập khẩu tab file tách ra:

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

Ngoài ra nếu bạn bao gồm một dòng tiêu đề trong tập tin tsv của bạn, bạn có thể cho sqlite tự động tạo cai ban. Chỉ cần sử dụng tên bảng không sử dụng trong quá trình nhập và thay đổi tệp tsv thành:

name param1 param2 
Bob 30 1000 
Wendy 20 900 
+2

Đây thực sự là câu trả lời hay nhất. Cảm ơn @adius –

+2

không đặt dấu chấm phẩy ở cuối câu lệnh nhập, như tôi đã làm :) –

Các vấn đề liên quan