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

发布于 2024-10-16 01:18:25 字数 236 浏览 0 评论 0原文

是否有一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

晨曦÷微暖 2024-10-23 01:18:25

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

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

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

csvtool -u '`' cat csv.csv

数据中不存在的某些字符替换上面的`)

这会从具有双引号的字段周围删除引号其中的引号。 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:

csvtool -u '`' cat csv.csv

(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

入怼 2024-10-23 01:18:25

考虑一个包含以下数据的 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)

Consider a CSV file my_input.csv with the following data. Note that the pipe ("|") is the default delimiter in SQLite.

apple|red
banana|yellow
celery|green

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.

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

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.

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)
酒与心事 2024-10-23 01:18:25

使用 Sqlitebrowser http://sqlitebrowser.sourceforge.net/ 中的导入功能非常幸运

Have had pretty good luck using the import feature in Sqlitebrowser http://sqlitebrowser.sourceforge.net/

铃予 2024-10-23 01:18:25

查看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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文