是否有Linux命令可以将CSV文件转换为SQLite数据库,有时会像:
csv2sqlite input.csv output.sqlite [optional_table_schema]
或者sqlite3是否有命令行选项可以执行此操作?
(我写了一些代码来处理/清理一些文本文件。最后,我可以调用将CSV文件转换为SQLite数据库。)
答案 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