从CSV导入BLOB到SQLite表

时间:2018-06-19 21:51:48

标签: sqlite csv import blob uuid

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

2 个答案:

答案 0 :(得分:2)

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

如果您的UUID已在CVS文件中表示为大端128位二进制数字,那么您可能在导入后可以执行类似UPDATE table SET uuid = CAST(uuid AS BLOB);的操作。如果它们是文本表示形式,例如 123e4567-e89b-12d3-a456-426655440000 ,则可以编写用户定义的函数进行转换,并将其与类似的导入后{{1} }。

答案 1 :(得分:0)

SQLite无法从CSV导入BLOB。

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

sqlite3 database.db < database.sql

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

如果您尝试一次传输大量的千兆字节,sqlite3将崩溃,并显示一个Out of memory错误。