小编Eva*_*oll的帖子

AWS DMS 创建没有 auto_increment 的表

我正在使用他们的 DMS 工具将我的数据库迁移到 Amazon 的 RDS。除了在源数据库上标记为 auto_increment 的列没有在目标数据库上标记为 auto_increment 之外,几乎所有内容看起来都不错。我还注意到我的索引和外键约束不包括在内。我在两端都运行 5.6 版。

有没有办法让 DMS 包含我的数据库的完整创建表?

mysql aws amazon-rds amazon-dms

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

postgres bytea 字段的反向字节顺序

我目前正在处理一个包含以 bytea 格式存储的散列的表。然而,将散列转换为十六进制字符串会产生错误的字节顺序。例子:

SELECT encode(hash, 'hex') FROM mytable LIMIT 1;

Output: 1a6ee4de86143e81
Expected: 813e1486dee46e1a
Run Code Online (Sandbox Code Playgroud)

有没有办法颠倒所有条目的字节顺序?

postgresql psql bytea

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

在 PostgreSQL 中的所有 last_modified 列上创建触发器

在 PostgreSQL 9.5 中,我有表格中的列

prefix_last_modified timestamp without time zone NOT NULL DEFAULT  (clock_timestamp() AT TIME ZONE 'UTC')
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来设置在每次更新行时自动更新的最后修改的值,我发现这篇定义函数的好帖子

CREATE OR REPLACE FUNCTION update_modified_column() 
RETURNS TRIGGER AS $$
BEGIN
    NEW.modified = now();
    RETURN NEW; 
END;
$$ language 'plpgsql';
Run Code Online (Sandbox Code Playgroud)

现在,我想知道是否有任何方法可以将列名传递给 PostgreSQL 函数并将其执行到NEW行?例如

CREATE OR REPLACE FUNCTION update_modified_column(varchar column)   
    RETURNS TRIGGER AS $$
    BEGIN
        NEW.column = now();
        RETURN NEW; 
    END;
$$ language 'plpgsql';
Run Code Online (Sandbox Code Playgroud)

postgresql trigger row-modification-time

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

为什么 to_char 左填充空格?

当我使用099指示 0 填充的 3 位数字时,我会在左侧得到空格。

SELECT '>' || to_char(1, '099') || '<';
 ?column? 
----------
 > 001<
(1 row)
Run Code Online (Sandbox Code Playgroud)

为什么to_char这里是左填充?为什么会有前导空格?

postgresql cast number-formatting string-representation

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

PostgreSQL 是否索引空值?

如果我有一张像这样的桌子:

Food
-----------------
name | price | x
Run Code Online (Sandbox Code Playgroud)

假设我在 name 和 price 上创建了一个索引,但是数据库在某些行中为 name 和 price 提供了一堆空值。PostgreSQL 会自动跳过索引这些行吗?我听说这种行为可能在以后的版本中有所改变。

postgresql index null

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

Flatten array with OPENJSON: OPENJSON on a value that may not be an array? [ [1] ], vs [1]

Frequently in Javascript you'll have something like

[ 7,2, [6,7], 2,10 ]
Run Code Online (Sandbox Code Playgroud)

How would you query that structure with OPENJSON I would like this,

0, 7
1, 2
2, 6,
2, 7,
3, 2
4, 10
Run Code Online (Sandbox Code Playgroud)

I'm having a hard time conditionally unwrapping that JSON array.

Sample Data

declare @ex nvarchar(max) = '[ 7,2, [6,7], 2,10 ]';
Run Code Online (Sandbox Code Playgroud)

My attempt

Find my query here

SELECT *
FROM OPENJSON(@ex, '$') AS j1
Run Code Online (Sandbox Code Playgroud)

This gets you to,

key value   type
0   7       2 …
Run Code Online (Sandbox Code Playgroud)

sql-server json

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

Postgres 是否忽略了我的函数成本注释?

为什么会这样:

create or replace function dummy() returns double precision as $$
SELECT random() $$
LANGUAGE SQL
COST 777;
explain select dummy();
Run Code Online (Sandbox Code Playgroud)

返回这个:

Result  (cost=0.00..0.01 rows=1 width=0)
Run Code Online (Sandbox Code Playgroud)

而不是777的成本?

postgresql functions postgresql-9.2

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

从 bytea 列导出图像文件

我正在尝试从 PostgreSQL 数据库users_data_circulation中导出图像文件。该表有一个photo(bytea) 列。

我的命令:

copy (select encode(photo,'hex') from users_data_circulation limit 1)
    TO '/tmp/imagetest.hext';
Run Code Online (Sandbox Code Playgroud)

在操作系统中:

$> xxd -p -r /tmp/imagetest.hex > /tmp/imagetest.jpg
$> file /tmp/imagetest.jpg
/tmp/imagetest.jpg: ASCII TEXT
Run Code Online (Sandbox Code Playgroud)

我无法打开jpg文件。我怎样才能把这个文件转换成jpg?

devinim@devinimpostgresql:~$ hexdump -C /tmp/image.hex | more
00000000  5c 5c 33 37 37 5c 5c 33  33 30 5c 5c 33 37 37 5c  |\\377\\330\\377\|
00000010  5c 33 34 30 5c 5c 30 30  30 10 4a 46 49 46 5c 5c  |\340\\000.JFIF\\|
00000020  30 30 …
Run Code Online (Sandbox Code Playgroud)

postgresql export postgresql-9.3 bytea

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

查找使用了哪些函数

我有一个PostgreSQL包含数百个函数的旧数据库模式。我知道其中一些不再使用了,我想删除它们。

查找有时执行哪些过程而哪些不执行的最简单方法是什么?PostgreSQL 中是否有任何关于过程使用的统计数据?

使用的引擎版本为 PostgreSQL 9.5。

postgresql statistics functions postgresql-9.5

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

何时需要 FROM 子句中的 COLUMN 别名?

FROM提供column_alias,SQL 规范调用这些<derived column list>子句。这就是 postgres 文档对它们的描述,

FROM包含别名的项目的替代名称。别名用于简洁或消除自联接(多次扫描同一个表)的歧义。当提供别名时,它完全隐藏了表或函数的实际名称;例如 given FROM foo AS f, 的其余部分SELECT必须将此FROM项目称为fnot foo。如果编写了别名,还可以编写列别名列表来为表的一列或多列提供替代名称。

什么时候需要这些?我什么时候不能只使用 COLUMN 别名?

SELECT t.*
FROM table_name AS t (a,b,c);
Run Code Online (Sandbox Code Playgroud)

对比

SELECT t.col1 AS a, t.col2 AS b, t.col3 AS c
FROM table_name AS t;
Run Code Online (Sandbox Code Playgroud)

这个例子取自@ypercube 选择的答案??这似乎不太有用。

上述上下文中的 FROM 别名不会提供真正的好处,除非您是

  • 依赖部分别名(不别名整个表)
  • 这取决于升序列排序
  • 你的表有超过三列(或者你可以在 from 子句中明确地写出来)。

这样做似乎依赖于常规t.*堆叠的危害,并增加了晦涩。那么什么时候FROM别名有用呢?

postgresql alias

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