将.csv文件导入sqlite3 db表

时间:2014-12-09 05:03:24

标签: shell sqlite export-to-csv

我编写了一个单行shell脚本来将.csv文件导入sqlite3数据库表。

echo -e '.separator "," \n.import testing.csv aj_test' | sqlite3 ajtest.db

sqlite3 database = ajtest.db ajtest.db中的sqlite3表= new_test

tests.csv有3列,第一列是int,其余两列是文本;所以new_test的结构也是 -

sqlite> .schema aj_test
CREATE TABLE aj_test(number integer not null,
first_name varchar(20) not null,
last_name varchar(20) not null);

运行脚本时,它不会显示任何错误,但也不会导入任何数据。关于我错过的任何准则???

content of testing.csv

4 个答案:

答案 0 :(得分:6)

经过大量的研究和讨论,我找到了一个正常运作的答案,

echo -e ".separator ","\n.import /home/aj/ora_exported.csv qt_exported2" | sqlite3 testdatabase.db

主要的是,我需要在import语句中包含.csv文件的路径。

答案 1 :(得分:2)

我发现这个有用:

(echo .separator ,; echo .import path/to/file.csv table_name) | sqlite3 filename.db

接受的答案对我不起作用。

答案 2 :(得分:0)

为什么不利用Sqlite的内置命令行选项将CVS文件加载到Sqlite数据库表中?我假设您正在编写bash shell脚本以将CSV文件数据加载到SQLite表。

看看下面的单行bash脚本:

#!/bin/bash

sqlite3  -separator "," -cmd ".import /path/to/test.csv aj_test" ajtest.db

以我有限的知识,我无法给您任何示例在数据库上完成加载后自动注销sqlite cli!

答案 3 :(得分:0)

这对我的需求最有效,因为它很简单(与 echo 解决方案不同)并且不会打开 sqlite shell。

#!/bin/bash 

sqlite3 -separator ',' stuff.db ".import myfile.csv t_table_name"