【发布时间】:2018-11-28 22:47:35
【问题描述】:
我应该如何将 UUID 放入 CSV 文件以使 SQLite .import 命令将它们作为 128 位 BLOB 加载到表中?
【问题讨论】:
标签: sqlite csv import blob uuid
我应该如何将 UUID 放入 CSV 文件以使 SQLite .import 命令将它们作为 128 位 BLOB 加载到表中?
【问题讨论】:
标签: sqlite csv import blob uuid
据我所知,从 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 这样的文本表示,您可以编写一个用户定义的函数来进行转换,并将其与类似的导入后 UPDATE 一起使用。
【讨论】:
SQLite 无法从 CSV 导入 BLOB。
解决方法是将CSV转换为SQL语句文件并执行:
sqlite3 database.db < database.sql
如果您从应用程序管道,100000-row 块是每个流程实例的最佳数量。
如果您尝试一次传输多个 GB,sqlite3 将崩溃并出现 Out of memory 错误。
【讨论】: