将Blob从CSV导入SQLite表

将Blob从CSV导入SQLite表,sqlite,csv,import,blob,uuid,Sqlite,Csv,Import,Blob,Uuid,我应该如何将UUID放入CSV文件中以使SQLite。导入命令将它们作为128位blob加载到表中?据我所知,从sqlite3 shell生成blob的唯一方法是使用zeroblob()、randomblob()和readfile()sql函数,CASTing一个值,或作为基本的16个blob文本(X'1234ABCD') 如果您的uuid在CVS文件中已经表示为big-endian 128位二进制数,那么您可以执行类似于updatetable SET uuid=CAST(uuid为BLOB)的

我应该如何将UUID放入CSV文件中以使SQLite
。导入
命令将它们作为128位blob加载到表中?

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


如果您的uuid在CVS文件中已经表示为big-endian 128位二进制数,那么您可以执行类似于
updatetable SET uuid=CAST(uuid为BLOB)的操作在导入之后。如果它们是像123e4567-e89b-12d3-a456-426655440000这样的文本表示,您可以编写一个用户定义的函数来进行转换,并将其与类似的导入后更新一起使用,据我所知,从sqlite3 shell生成blob的唯一方法是使用
zeroblob()
randomblob()
readfile()
sql函数,
CAST
ing一个值,或作为基本的16个blob文本(
X'1234ABCD'


如果您的uuid在CVS文件中已经表示为big-endian 128位二进制数,那么您可以执行类似于
updatetable SET uuid=CAST(uuid为BLOB)的操作在导入之后。如果它们是像123e4567-e89b-12d3-a456-426655440000这样的文本表示,您可以编写一个用户定义的函数来进行转换,并将其与类似的导入后更新一起使用,SQLite无法从CSV导入blob

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

sqlite3 database.db < database.sql
sqlite3 database.db
如果从应用程序进行管道传输,
100000
-行块是每个流程实例的最佳数量


如果您试图一次传输多个千兆字节,
sqlite3
将因
内存不足
错误而崩溃。

SQLite
无法从CSV导入blob

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

sqlite3 database.db < database.sql
sqlite3 database.db
如果从应用程序进行管道传输,
100000
-行块是每个流程实例的最佳数量


如果您试图一次传输多个千兆字节,
sqlite3
将因
内存不足
错误而崩溃。

关于您描述的第一种情况,我无法导入128位二进制数,因为SQLite没有这样的类型。我将了解如何告诉导入程序将UUID字符串视为十六进制表示的二进制数据。关于您描述的第一种情况,我无法导入128位二进制数,因为SQLite没有这样的类型。我将了解如何告诉导入程序将UUID字符串视为十六进制表示的二进制数据。