什么类型的 sql 数据库可以在列中存储声音或数组数据?

what type of sql db can store sound or array data in a column?

我需要附加,在 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 数据类型。类似于BLOBCLOB保存大数据,但是是字符格式,所以它suitable保存大文本,比如你提到的数组。

Oracle Large Objects

2。 MySQL :

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

MySQL Large Objects

3。 PostgreSQL :

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

PostgreSQL Large Objects

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

此外,关于列中数据的 "Shortened Version",您可以在 table 中插入前 10 个字符(或任何适合您的任意数字)。这有不同的技术和过程,具体取决于您的数据库引擎。

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