标签: bytea

在PostgreSQL中存储文件是否存在性能问题?

可以在PostgreSQL的表中存储像HTML页面,图像,PDF等文件,或者它很慢?我读了一些文章说这不推荐,但我不知道是否属实.

什么是更好的使用,存储为BLOB(它存储在文件中,对吗?)或存储bytea类型?

postgresql blob file bytea

38
推荐指数
2
解决办法
2万
查看次数

什么是数据类型bytea以及何时使用它?

在Postgres中有一个名为的数据类型 bytea

Postgres文档就在这里: http://www.postgresql.org/docs/9.0/static/datatype-binary.html

我无法理解何时使用它 - 我也不能真正理解这种数据类型的用途.

我已经多次遇到过这个术语bytea并开始怀疑自己"看起来他们希望我理解这一点......也许我应该知道它是什么."

如果有人可以给出一个简单的定义,并给出一些我可能会使用它的情况,这将是非常有用的.

谢谢.

postgresql definition bytea

18
推荐指数
2
解决办法
2万
查看次数

如何在Postgres数据库中保存图像文件?

出于学习目的,我正在使用Python + Flask创建一个站点.我想从数据库中恢复图像并在屏幕上显示.但是一步一步.

我不知道如何在我的数据库中保存图像.我的搜索只显示我必须bytea在我的数据库中使用一个类型.然后我得到我的图像,并以某种方式(?)将其转换为字节数组(bytea ==数组的咬?)并以某种方式(?)在插入命令中使用此数组.

我能够发现(也许)如何在Java(这里)和C#(这里)中做到这一点,但我真的想使用Python,至少现在.

有人能帮我吗?

这个网站有很多这类问题.但大多数(很容易超过85%)的回复是"您不应该在数据库中保存图像,它们属于fs"并且无法回答问题.其余的并没有完全解决我的问题.因此,如果副本有这样的答案,请不要将其标记为重复.

python database postgresql image bytea

11
推荐指数
2
解决办法
2万
查看次数

将PostgreSQL bytea存储的serialized-java-UUID转换为postgresql-UUID

我们的一个软件项目使用PostgreSQL表,其中列为'guid',类型为bytea.

这与hibernate 3.3.2.GA和PostgreSQL 8.4一起使用,它使用java对象序列化来序列化java UUID类型.结果是一个类似于以下escape格式的字节bytea文字:

'\254\355\000\005sr\000\016java.util.UUID\274\231\003\367\230m\205/\002\000\002??J\000\014leastSigBitsJ\000\013mostSigBitsxp\273\222)\360*r\322\262u\274\310\020\3??42\004M '
Run Code Online (Sandbox Code Playgroud)

...我们不能轻易地在查询中使用select或条件来检索相关行.

有没有人有办法在查询的select-或where-parts中读取或使用bytea-column(例如通过psql或pgadmin3),而无需设置一些hibernate-query?

java postgresql uuid serialization bytea

8
推荐指数
2
解决办法
5352
查看次数

将图像存储在PostgreSQL数据库的bytea字段中

我使用PHP将图像存储在具有列类型bytea的PostgreSQL数据库中.问题是每次我尝试在浏览器中加载图像时都不会出现.Firefox开发人员控制台表示图像被截断或损坏.

PHP代码:

//code for inserting into the database
if(array_key_exists('submit_pic', $_POST)){
$user=$_SESSION['name'];
if(isset($_FILES['thumbnail'])&&$_FILES['thumbnail']['size']>0){
$fi =  $_FILES['thumbnail']['tmp_name'];
$p=fopen($fi,'r');
$data=fread($p,filesize($fi));
$data=addslashes($data);
$dat= pg_escape_bytea($data); 
$q="update userinfo set image='{$dat}' where email='$user'";
$e=pg_query($q)or die(pg_last_error());

// code for retreving from database
require_once('conn.php');
session_start();
$user=$_SESSION['name'];
pg_query('SET bytea_output = "escape";');
$lquery ="select image from userinfo where email='$user'";
$lq = pg_query($lquery)or die(pg_last_error());
$lqq=pg_fetch_row($lq,'image');
header("conent-type:image");
echo pg_unescape_bytea($lqq[0]);
Run Code Online (Sandbox Code Playgroud)

我需要将上传的图像存储在数据库中 - 我实际上正在使用heroku谢谢

php postgresql heroku bytea

7
推荐指数
1
解决办法
2万
查看次数

如何使用JPA从PostgreSQL读取bytea图像数据?

我有PostgreSQL数据库,并且有一个数据类型为'bytea'的列'image'.我无法修改列或数据库配置.JPA带注释的POJO包含跟随映射

@Column(name="image")
private byte[] image;
Run Code Online (Sandbox Code Playgroud)

返回的数据采用以下格式(这只是一个示例)

WF5ClN6RlpLZ0hJTUdNQ1FJWmkwcFVGSUdNQ0lDWUE5TUEvanRFeElwK2x0M2tBQUFBQVNVVk9SSzVDWUlJPQo=
Run Code Online (Sandbox Code Playgroud)

当我将此数据写入文件(.jpeg)时,照片查看器会说"这是损坏的文件".我也理解实际的图像字节数据与上面的示例有所不同.我读了一些博客,提到PostgreSQL将十六进制转换应用于bytea数据.如何在有或没有JPA的情况下将其恢复为原始数据?

数据库 - PostgresSQL版本9.5.1

司机

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.4-1205-jdbc41</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

java postgresql hibernate jpa bytea

7
推荐指数
3
解决办法
2万
查看次数

在PostgreSQL中将bytea转换为双精度

我有一个数据库,其中一个表存储bytea从另一个系统收集的各种通用数据的blob().该bytea字段可以包含任何内容.为了解如何解释数据,该表还具有格式字段.我写了一个Java应用程序读取bytea从数据库的字段byte[],然后我可以很容易地将其转换为double[]int[]或任何格式字段通过说ByteBuffer和各种视图(DoubleBuffer,IntBuffer,等).

现在,我需要在触发器函数中对数据库本身的数据进行一些操作,以便与另一个表保持完整性.我可以找到几乎任何可以想象的数据类型的转换,但我找不到任何从bytea(甚至bit)到double precision和返回的内容.A bytea可以被分解,转换为比特,然后转换为intbigint,但不是a double precision.例如,x'deadbeefdeadbeef'::bit(64)::bigint将转换为-2401053088876216593没有问题,但x'deadbeefdeadbeef'::bit(64)::double precision失败的"错误:无法将类型位转换为双精度"而不是给出IEEE 754的答案-1.1885959257070704E148.

我找到了这个答案/sf/answers/816329461/,它基本上实现了IEEE标准将位转换为double,但是在PostgreSQL中真的没有基本的转换函数吗?另外,我需要向后退double precision,bytea当我完成操作数据并需要更新表时,这个答案没有提供.

有任何想法吗?

sql postgresql double type-conversion bytea

6
推荐指数
1
解决办法
846
查看次数

PostgreSQL - 如何将 Base64 图像字符串插入 BYTEA 列?

我有以下 SQL:

CREATE TABLE Documents (
  Id INT NOT NULL,
  UserId INT NOT NULL,
  Label CHARACTER VARYING(220) NOT NULL,
  Image BYTEA NOT NULL,
  PRIMARY Key(Id),
  FOREIGN KEY (UserId) REFERENCES Users(Id)
);
Run Code Online (Sandbox Code Playgroud)

我想知道,我应该如何将 Base64 图像插入表中。

Base64 字符串来自使用Node.js 上的fs模块获取图像后的 Buffer。

我正在尝试使用 Sequelize 的原始查询插入图像,但我还没有找到关于此的正确信息。

postgresql base64 sequelize.js bytea

6
推荐指数
2
解决办法
3万
查看次数

将字节转换为二进制字符串

我需要解码一个 base64 字符串并获取一大块二进制文件。

Postgres 中是否有 SQL 函数可以简单地将 abytea转换为二进制字符串表示?
(例如“00010001010101010”。)

postgresql binary-data bytea

6
推荐指数
2
解决办法
8351
查看次数

将bigint转换为bytea,但交换字节顺序

我有一个PostgreSQL表,我想将列从bigint一个bytea字节改为字节以保存更多数据.我在想使用以下顺序:

  1. alter table mytable add new_column
  2. update mytable set new_column = int8send(old_column)
  3. alter table drop old_column
  4. alter table rename new_column to old_column

上述序列的工作,唯一的问题是,我想在字节序列bytea逆转.例如,如果一个值old_column0x1234567890abcdef,上面的序列会产生\0224Vx\220\253\315\357,但我希望它是 \357\315\253\220xV4\022.似乎结果bytea使用了来自原始的big-endian命令bigint.

没有编写程序,有没有一种简单的方法可以做到这一点?我swap64()在PostgreSQL中寻找一种功能但却找不到它.

postgresql endianness bytea

5
推荐指数
1
解决办法
2500
查看次数