在Linux中,是否有将CSV文件转换为SQLite文件的命令?
是否有一个 Linux 命令可以将 CSV 文件转换为 SQLite 数据库,例如:
csv2sqlite input.csv output.sqlite [optional_table_schema]
或者 sqlite3 是否有可以执行此操作的命令行选项?
(我编写了一些代码来处理/清理一些文本文件。最后,我可能会调用将 CSV 文件转换为 SQLite 数据库。)
Is there a Linux command that will convert a CSV file into an SQLite database, sometime like:
csv2sqlite input.csv output.sqlite [optional_table_schema]
Or does sqlite3 have command-line options that will do this?
(I wrote some code to process/clean some text files. At the end, I may call convert a CSV file into an SQLite database.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您的 csv 非常非常简单(没有引用、转义等),您可以使用 sqlite shell 导入它:
http://www.sqlite.org/cvstrac/wiki?p=ImportingFiles
编辑:但可能不是,所以我认为您需要先转换文件。如果您的csv文件没有ascii双引号或换行符,您可以将其转换为sqlite可以使用以下命令导入的文件:(用
数据中不存在的某些字符替换上面的`)
这会从具有双引号的字段周围删除引号其中的引号。 csvtool 似乎对于转义并不聪明。它没有我可以看到的任何关于处理转义的选项,并且任何包含 " 的字段,它只是保留原样,并带有引号。
无论如何,然后您可以使用上面的链接了解如何导入到 sqlite。确保设置相同的分隔符
If your csv is very very simple (no quoting, escaping, etc) you can import it with the sqlite shell:
http://www.sqlite.org/cvstrac/wiki?p=ImportingFiles
Edit: But it probably isn't, so I think you'll need to convert the file first. If your csv file no ascii double quotes, or newlines, you can convert it into a file that sqlite can import with this command:
(replacing the ` above with some character that's not in your data)
That removes quotes from around fields that have double quotes in them. csvtool doesn't seem to be smart about escaping. It doesn't have any options I can see about handling escaping, and any fields that have " in them, it just leaves as is with the quotes around.
anyway, then you can use the link above for how to import to sqlite. Just make sure you set the same separator
考虑一个包含以下数据的 CSV 文件
my_input.csv
。请注意,管道(“|”)是 SQLite 中的默认分隔符。以下是使用上述输入文件创建 SQLite 数据库
my_db.sqlite
的两种方法。方法 1:将以下代码粘贴到命令行中。或者将其粘贴到可执行文件中并在 bash 中运行该文件。
方法2:将以下Python代码粘贴到文件中,并使用Python 2.6.6、2.7.1或3.1.3运行它。
Consider a CSV file
my_input.csv
with the following data. Note that the pipe ("|") is the default delimiter in SQLite.Below are two methods of creating an SQLite database
my_db.sqlite
with the above input file.Method 1: Paste the following code onto the command line. Or paste it into an executable file and run the file in bash.
Method 2: Paste the following Python code into a file and run it using Python 2.6.6, 2.7.1, or 3.1.3.
使用 Sqlitebrowser http://sqlitebrowser.sourceforge.net/ 中的导入功能非常幸运
Have had pretty good luck using the import feature in Sqlitebrowser http://sqlitebrowser.sourceforge.net/
查看termsql。 https://gitorious.org/termsql
https://gitorious.org/termsql/pages/Home
它将命令上的文本转换为 SQL线。 (CSV 只是文本)
示例:
cat textfile | termsql -o sqlite.db
默认情况下分隔符是空格,因此要使其与 CSV 一起使用,
使用逗号,你可以这样做:
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
Check out termsql. https://gitorious.org/termsql
https://gitorious.org/termsql/pages/Home
It converts text to SQL on the command line. (CSV is just text)
Example:
cat textfile | termsql -o sqlite.db
By default the delimiter is whitespace, so to make it work with CSV that
is using commata, you'd do it like this:
cat textfile | termsql -d ',' -o sqlite.db
alternatively you can do this:
termsql -i textfile -d ',' -o sqlite.db
By default it will generate column names "COL0", "COL1", if
you want it to use the first row for the columns names you do this:
termsql -i textfile -d ',' -1 -o sqlite.db
If you want to set custom column names you do this:
termsql -i textfile -d ',' -c 'id,name,age,color' -o sqlite.db