在Linux中,是否有将CSV文件转换为SQLite文件的命令?

时间:2011-02-07 17:58:04

标签: linux command-line csv sqlite

是否有Linux命令可以将CSV文件转换为SQLite数据库,有时会像:

csv2sqlite input.csv output.sqlite [optional_table_schema]

或者sqlite3是否有命令行选项可以执行此操作?

(我写了一些代码来处理/清理一些文本文件。最后,我可以调用将CSV文件转换为SQLite数据库。)

4 个答案:

答案 0 :(得分:7)

如果您的csv非常简单(没有引用,转义等),您可以使用sqlite shell导入它:

http://www.sqlite.org/cvstrac/wiki?p=ImportingFiles

编辑:但它可能不是,所以我认为你需要先转换文件。如果您的csv文件没有ascii双引号或换行符,您可以将其转换为sqlite可以使用此命令导入的文件:

csvtool -u '`' cat csv.csv

(将上面的某些字符替换为数据中的某个字符)

删除了包含双引号的字段周围的引号。 csvtool对于逃避似乎并不聪明。它没有任何我可以看到的关于处理转义的选项,以及任何具有“在其中的字段,它只是随着引号一起离开。

无论如何,你可以使用上面的链接来了解如何导入到sqlite。只需确保设置相同的分隔符

答案 1 :(得分:1)

考虑包含以下数据的CSV文件my_input.csv。请注意,管道(“|”)是SQLite中的默认分隔符。

apple|red
banana|yellow
celery|green

以下是使用上述输入文件创建SQLite数据库my_db.sqlite的两种方法。

方法1:将以下代码粘贴到命令行上。或者将其粘贴到可执行文件中并以bash运行该文件。

sqlite3 my_db.sqlite "CREATE TABLE my_table(food TEXT, color TEXT)"
sqlite3 my_db.sqlite ".import my_input.csv my_table"

方法2:将以下Python代码粘贴到文件中,并使用Python 2.6.6,2.7.1或3.1.3运行它。

import subprocess

args = [
    "sqlite3",
    "my_db.sqlite",
    "CREATE TABLE my_table(food TEXT, color TEXT)",
    ]

subprocess.call(args)

args = [
    "sqlite3",
    "my_db.sqlite",
    ".import my_input.csv my_table",
    ]

subprocess.call(args)

答案 2 :(得分:0)

使用Sqlitebrowser http://sqlitebrowser.sourceforge.net/

中的导入功能运气好

答案 3 :(得分:0)

查看termsql。 https://gitorious.org/termsql https://gitorious.org/termsql/pages/Home

它在命令行上将文本转换为SQL。 (CSV只是文字)

示例:

cat textfile | termsql -o sqlite.db

默认情况下,分隔符是空格,因此要使其与CSV一起使用 正在使用commata,你可以这样做:

cat textfile | termsql -d',' -o sqlite.db

或者你可以这样做:

termsql -i textfile -d',' -o sqlite.db

默认情况下,它会生成列名" COL0"," COL1",如果 您希望它使用第一行作为列名称:

termsql -i textfile -d',' -1 -o sqlite.db

如果要设置自定义列名,请执行以下操作:

termsql -i textfile -d',' -c' id,姓名,年龄,颜色' -o sqlite.db