将 BLOB 从 CSV 导入到 SQLite table

Import BLOBs from a CSV to an SQLite table

我应该如何将 UUID 放入 CSV 文件中,以便让 SQLite .import 命令将它们作为 128 位 BLOB 加载到 table 中?

据我所知,从 sqlite3 shell 生成 blob 的唯一方法是使用 zeroblob()randomblob()readfile() sql 函数,CASTing 一个值,或作为基数为 16 的 blob 文字 (X'1234ABCD')。

如果您的 UUID 已经在 CVS 文件中表示为大端 128 位二进制数,您可能可以在导入后执行类似 UPDATE table SET uuid = CAST(uuid AS BLOB); 的操作。如果它们是像 123e4567-e89b-12d3-a456-426655440000 这样的文本表示,您可以编写一个用户定义的函数来进行转换,并将其与类似的 post-导入UPDATE.

SQLite 无法从 CSV 导入 BLOB。

解决方法是将CSV转换为SQL语句文件并执行:

sqlite3 database.db < database.sql

如果您从应用程序进行管道传输,100000 行块是每个流程实例的最佳数量。

如果您尝试一次传输许多千兆字节,sqlite3 将崩溃并出现 Out of memory 错误。