(1)什么是csv文件?
CSV,即Comma-Separated Values,意思是逗号分隔值,或字符分隔值。.csv文件是一种将表数据借助字符分隔的方式存储成文本的文件格式。譬如,可以在excel中另存为csv文件。我们先来试一个,创建一个excel文件,内容如下:
| A | B | C |
|---|---|---|
| 0 | name0 | des0 |
| 1 | name1 | des1 |
| 2 | name2 | des2 |
另存,选择格式为csv,会弹窗要求输入分隔符,输入“|”,得到文本文件,用文本浏览器查看内容如下:
0|name0|des0
1|name1|des1
2|name2|des2
(2)如何将SQLite数据库表导出到csv文件?
先用show命令看一下当前SQLite用户shell中的设置,其中包含分隔符:
sqlite> .show
echo: off
eqp: off
explain: off
headers: off
mode: list
nullvalue: ""
output: stdout
colseparator: "|"
rowseparator: "\n"
stats: off
width:
看到分隔符为“|”。可以使用separator命令来指定分隔符:
sqlite> .separator ,
sqlite> .separator |
sqlite>
导出到csv的原理很简单,将SQLite输出重定向到.csv文件,然后执行select。同样,使用ouput命令,无需手动创建输出的文件,直接输入文件名作为output命令参数即可:
sqlite> select * from test_table;
0|name0|des0
1|name1|des1
2|name2|des2
sqlite>
sqlite> .output test_csv.csv
sqlite> select * from test_table;
sqlite> .output stdout
好,查看test_csv.csv文件内容:
0|name0|des0
1|name1|des1
2|name2|des2
因为这种方式其实只是重定向了输出,执行的是SQL,所以可以满足各种数据组合、筛选等需求。
(3)如何将csv文件导入到SQLite数据库?
使用import命令(.import [file][table]):
sqlite> delete from test_table;
sqlite>
sqlite> select * from test_table;
sqlite>
sqlite> .import test_csv.csv test_table
sqlite>
sqlite> select * from test_table;
0|name0|des0
1|name1|des1
2|name2|des2
sqlite>
如果数据库中没有这个表,import命令会直接创建表吗?yes。
sqlite> .import test_csv.csv test_table2
sqlite>
sqlite> select * from test_table2;
1|name1|des1
2|name2|des2
sqlite>
sqlite> .schema test_table2
CREATE TABLE test_table2(
"0" TEXT,
"name0" TEXT,
"des0" TEXT
);
看到使用import将csv文件导入到一个不存在的表时,会自动创建这个表,但是会把第一行解析成表信息,并且每个字段都会定义成TEXT。
另外,注意,csv文件的字段分隔符需要与SQLite用户shell中的设置一致。将test_csv.csv文件分隔符改一下测试一下:
0,name0,des0
1,name1,des1
2,name2,des2
sqlite> delete from test_table;
sqlite>
sqlite> select * from test_table;
sqlite>
sqlite> .import test_csv.csv test_table
test_csv.csv:1: expected 3 columns but found 1 - filling the rest with NULL
test_csv.csv:1: INSERT failed: datatype mismatch
test_csv.csv:2: expected 3 columns but found 1 - filling the rest with NULL
test_csv.csv:2: INSERT failed: datatype mismatch
test_csv.csv:3: expected 3 columns but found 1 - filling the rest with NULL
test_csv.csv:3: INSERT failed: datatype mismatch
sqlite>
sqlite> select * from test_table;
sqlite>
3803


利用import命令导入导出数据到CSV文件&spm=1001.2101.3001.11974&articleId=72550843&d=1&t=3&u=3a87bee8d2ce486d88c9b2048a82c56a)

被折叠的 条评论
为什么被折叠?



