首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将mysql中blobs中的二进制数据连接起来

将mysql中blobs中的二进制数据连接起来
EN

Stack Overflow用户
提问于 2014-12-28 19:17:31
回答 2查看 1.3K关注 0票数 0

我在MEDIUMBLOB字段中有一个包含音频数据的mysql数据库表。问题是,一个音频文件在不同的行中。所以我想加入他们。当我这么做时:

代码语言:javascript
复制
select data from audio where id=1 into outfile "output" fields escaped by '';

。。我有音频。当我为id=2做同样的事情时,我会得到音频。当我把它们放在一起时:

代码语言:javascript
复制
select data from audio order by date, time into outfile "output" fields escaped by '';

。。我得到一段时间的音频,然后是高振幅的噪音。噪音从id=2本来会出现的地方开始。如果我选择两个以上的列放在一起,有时来自特定id的输出是噪声,有时是正确的音频。不是交织在一起的。

那么,我如何从多个行中提取并连接blobs到一个连贯的二进制输出文件中呢?

编辑:这是原始音频数据。要把它读到Audacity中,您可以转到导入->raw。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-28 19:40:37

SELECT INTO OUTFILE的主要目的是允许您将表快速转储到文本文件,并补充LOAD DATA INFILE

我强烈怀疑SELECT到OUTFILE要么添加了ASCII NULL,要么在列之间添加了其他格式,以便可以读取它。

您可以比较二进制输出以确定这是否为真,还可以选择可能也存在的任何其他格式、编码或形状。

您必须使用OUTFILE吗?-您不能获得二进制数据并直接使用脚本或其他中间层来创建文件,而不是依赖数据库吗?

更新

写完这篇文章后,阅读下面的评论。我想到了CONCAT,MySQL将BLOB值视为二进制字符串(字节字符串),因此理论上,将多个列简单地串联成一个列可能有效。

如果没有,则无需编写简单的珍珠、PHP、C、bash或其他脚本语言来查询数据库、连接两个或多个二进制列并将输出写入系统上的文件。

票数 1
EN

Stack Overflow用户

发布于 2014-12-28 20:23:11

您需要的是从命令行运行mysql命令,使用-e传递要执行的sql语句,以及二进制输出的适当标志。

然后,使用带有空分隔符的group_concat连接所有数据。

最后,输出到您的文件。唯一需要注意的是group_concat上内置的限制,您可以在.ini文件中修改这个限制,或者设置一个全局变量。

下面是这样的情况:

-二进制模式-e“按日期、时间从音频顺序选择group_concat(数据分隔符‘);”-A -B -r -L -N YOUR_DATABASE_NAME > output

我只是在数据库中尝试了二进制数据(而不是音频),它可以工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27679779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档