哪种类型的sql db可以在列中存储声音或数组数据?

哪种类型的sql db可以在列中存储声音或数组数据?,sql,storage,wav,Sql,Storage,Wav,我需要附加,在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, ...,

我需要附加,在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
datatype来存储二进制文件本身。此外,如果要存储数组而不是二进制文件,还可以使用
CLOB
datatype。与
BLOB
类似,
CLOB
保存大数据,但采用字符格式,因此适合保存大文本,如您提到的数组

2。MySQL:

同样的数据类型,
BLOB
也可以在MySQL中使用。
TEXT
(及其派生的
LARGETEXT
)数据类型可用于保存大数组

3。PostgreSQL:

PgSQL没有BLOB,但另一种称为
BYTEA
的数据类型可以存储二进制对象。另外,
TEXT
datatype可以在PgSQL中存储大字符串

注意:在数据库中处理二进制数据需要一个中间层应用程序充当客户端和服务器之间的“转换器”。在上面的参考链接中获取更多信息

此外,关于列中数据的“缩短版本”,您可以在表中插入前10个字符(或适用于您的任意数字)。这有不同的技术和过程,具体取决于您的数据库引擎


希望这已经回答了您的问题。

根据您使用的数据库引擎,您可能会将音频文件存储为blob或类似的数据类型(例如,您也可以在数据库中存储指向音频文件的文件系统引用。您当然可以按照您的建议将数组存储为文本。@Varonton是的,但存储数组很难看。。还有其他想法吗?BLOB是最好的选择吗?它始终取决于您的用例,它可能对性能、安全性、可移植性有要求可扩展性、资产重用等。总是有权衡。BLOB会起作用,但我确信有限制。