我需要附加,在sql数据库中创建一个新列。它应该存储用户语音的数字numpy表示形式-numpy数组或图像-频谱图。numpy数组看起来像这样:
array([[ 2.891e-07, 2.548e-03, ..., 8.116e-09, 5.633e-09],
[ 1.986e-07, 1.162e-02, ..., 9.332e-08, 6.716e-09],
...,
[ 3.668e-09, 2.029e-08, ..., 3.208e-09, 2.864e-09],
[ 2.561e-10, 2.096e-09, ..., 7.543e-10, 6.101e-10]])
我知道sql只能存储文本数据,不知道是否可以在列中附加或表示数组。
ID | date | voice
1 01-01-20 array([[ 2.891e-07, 2.548e-03...
2 01-02-20 array([[ 2.891e-07,
这取决于您的数据库引擎。我为您提供了我使用过的3种最常见数据库的答案:
1。甲骨文:
您可以使用BLOB
数据类型来存储二进制文件本身。另外,如果要存储数组而不是二进制文件,则也可以使用CLOB
数据类型。与BLOB
相似,CLOB
保存大数据,但采用字符格式,因此它适合保存大文本,例如您提到的数组。
2。 MySQL:
相同的数据类型,BLOB
也可以在MySQL中使用。TEXT
(及其派生词,例如LARGETEXT
)数据类型可用于保存大数组。
3。 PostgreSQL:
PgSQL没有BLOB,但是另一个称为BYTEA
的数据类型可以存储二进制对象。 TEXT
数据类型也可以在PgSQL中存储大字符串。
注意:使用数据库中的二进制数据需要中间层应用程序充当客户端和服务器之间的“翻译器”。在上面的参考链接中获取更多信息。
此外,关于一列中的数据的“精简版本”,您可以在表格内插入前10个字符(或任何适合您的任意数字)。这具有不同的技术和过程,具体取决于您的数据库引擎。
希望它回答了您的问题。