小编Eva*_*oll的帖子

如何删除我在 PostgreSQL 中的所有函数?

现在我必须使用查询来获取文本文件中的命令。然后从中删除双引号。最后,在 psql shell 中运行该文件。

如何一步删除 PostgreSQL中的所有函数?

postgresql dynamic-sql functions

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

从没有 NULL 元素的多列创建数组

我正在尝试构建一个查询以将旧表中的多个列聚合在一起,该表存储在类似的结构中,如下所示:

CREATE TEMPORARY TABLE foo AS
SELECT * FROM ( VALUES
  (1,'Router','Networking','Sale',NULL),
  (2,NULL,'Router','Networking','Sale'),
  (3,NULL,NULL,'Networking','Sale'),
  (4,NULL,NULL,NULL,NULL)
) AS t(id,tag_1,tag_2,tag_3,tag_4);
Run Code Online (Sandbox Code Playgroud)

不是我想要的一个例子

这是我要构建的查询的示例:

SELECT ID, json_build_array(Tag_1, Tag_2, Tag_3, Tag_4) AS tags
FROM table
Run Code Online (Sandbox Code Playgroud)

问题是上面的查询将行中的 NULL 值添加到数组中:

ID  Tags
--------------------------------------------------
1   ['Router', 'Networking', 'Sale', null]
2   [null, 'Router', 'Networking', 'Sale']
3   [null, null, 'Networking', 'Sale']
4   [null, null, null, null]
Run Code Online (Sandbox Code Playgroud)

我想避免编写过于复杂的CASE WHEN语句来过滤掉 NULL,而且我对使用 PostgreSQL 的 JSON 数据类型还是个新手。在 Postgres 中构建 JSON 数组时,是否可以避免包含 NULL?

postgresql array json postgresql-9.4

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

在 Linux 中获取“sqlcmd sqlcmd: command not found”?

每当我跑步时,sqlcmd我都会收到“找不到命令”

sqlcmd -S localhost -U SA -P '<YourPassword>'
sqlcmd: command not found
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

sql-server ubuntu sql-server-2017

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

获取列的最后更新时间

此命令给出表的上次更新日期

SELECT UPDATE_TIME
FROM   information_schema.tables
WHERE  TABLE_SCHEMA = 'MyDB'
AND TABLE_NAME = 'MyTable'
Run Code Online (Sandbox Code Playgroud)

但我想找到表的特定列的上次更新时间。我不能使用触发器,因为我想知道系统表中特定列的上次更新时间。

我希望我能很好地解释我的问题。

mysql information-schema row-modification-time

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

在 Microsoft SQL Server 2008 中,语法会生成错误“未启用并行数据仓库 (PDW) 功能”。

我从排序分区上的聚合生成了以下虚拟列,

MIN(picture_id) OVER ( PARTITION BY [360_set] ORDER BY picture_id ASC )
Run Code Online (Sandbox Code Playgroud)

但是,当我执行它时,我得到以下信息。

Msg 11305, Level 15, State 10, Line 12
The Parallel Data Warehouse (PDW) features are not enabled.
Run Code Online (Sandbox Code Playgroud)

不过,这就是有趣的地方,没有分区上的排序顺序,它可以工作:

MIN(picture_id) OVER ( PARTITION BY [360_set] )
Run Code Online (Sandbox Code Playgroud)

此外,ROW_NUMBER()窗口函数(不是聚合函数)在分区上以显式顺序工作。

ROW_NUMBER() OVER ( PARTITION BY [360_set] ORDER BY picture_id ASC )
Run Code Online (Sandbox Code Playgroud)

为什么所需的语句不起作用?这是在哪里记录的?版本信息被请求,这是我在帮助→关于中的内容。

Microsoft SQL Server Management Studio          10.0.5512.0
Microsoft Analysis Services Client Tools        10.0.5500.0
Microsoft Data Access Components (MDAC)         6.1.7601.17514
Microsoft MSXML                                 3.0 6.0 
Microsoft Internet Explorer                     9.10.9200.16635
Microsoft …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008-r2 window-functions

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

如何使用 VIEW 将 Postgresql ltree 结构转换为嵌套集?

我想问一个关于仅使用VIEWs将 PostgreSQL ltree 结构转换为仅具有一个查询的嵌套集结构的方法的问题。

例如,我有一个表,其中包含相互关联的数据,如下图所示:

表结构

所以,表声明是

KeywordLtree(id INT PRIMARY KEY, value TEXT, path ltree);

-- And the data is:

pk |  value  |  path  |
0  |   'A'   |   ''   |
0  |   'B'   |   '1'  |
0  |   'C'   |   '2'  |
0  |   'D'   |  '1.3' |
0  |   'E'   |  '1.4' |
0  |   'F'   |  '1.5' |
0  |   'G'   |  '2.6' |
0  |   'H'   |  '2.7' |
Run Code Online (Sandbox Code Playgroud)

我必须将此表转换为这样的表:

KeywordSets(id INT PRIMARY KEY, …
Run Code Online (Sandbox Code Playgroud)

postgresql hierarchy postgresql-9.4

8
推荐指数
1
解决办法
1362
查看次数

如何在不使用 UNION ALL 或临时表的情况下显示每个存储的行两次?

名为 的相关表emp包含以下数据:

CREATE TEMPORARY TABLE emp AS
SELECT * FROM ( VALUES (1,'A'), (2,'B'), (3,'C') );

 ID  Name
 --  ----
 1    A
 2    B
 3    C
Run Code Online (Sandbox Code Playgroud)

数据操作操作的输出或结果集应如下所示:

 ID  Name 
 --  ----
 1    A
 1    A 
 2    B
 2    B
 3    C
 3    C
Run Code Online (Sandbox Code Playgroud)

要求

必须获得符合以下条件的输出:

  • 未使用 UNION ALL 运算符与所采用的 SELECT 语句相关联
  • 不使用临时表
  • 不对现有表使用 UPDATE 操作

注意:这个场景是一个面试官给我带来的。

interview-question duplication

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

VACUUM VERBOSE 输出,不可移除的“死行版本无法移除”?

我有一个 Postgres 9.2 DB,其中某个表有很多不可移动的死行:

# SELECT * FROM public.pgstattuple('mytable');
 table_len  | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_percent 
------------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+--------------
 2850512896 |      283439 | 100900882 |          3.54 |          2537195 |     2666909495 |              93.56 |   50480156 |         1.77
(1 row)
Run Code Online (Sandbox Code Playgroud)

正常的吸尘也显示许多不可移动的死行:

# VACUUM VERBOSE mytable;
[...]
INFO:  "mytable": found 0 removable, 2404332 nonremovable row versions in 309938 out of 316307 pages
DETAIL:  2298005 dead row versions cannot be removed yet.
There were 0 unused …
Run Code Online (Sandbox Code Playgroud)

postgresql vacuum

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

结果集的PostgreSQL网络压缩?

我正在阅读有关使用 PostgreSQL 进行网络压缩的内容,以查看是否有任何东西可以提供允许大结果集通过网络传输到远程 Web 服务器的内容。似乎没有这种东西。有没有解决方案可以做到这一点,这不是 SSL?

安全证书

似乎有一个涉及 SSL 的解决方案。阅读了与此相关的线程后,似乎该解决方案不再可取,因为它使系统容易受到CRIME worldwide错误的影响。

尽管不可取,但您似乎至少可以在当前重新启用 SSL 压缩,OPENSSL_DEFAULT_ZLIB但将来它将被删除,并且当前在 openssl 中的编译时被禁用

no-zlib         [default]
no-zlib-dynamic [default]
Run Code Online (Sandbox Code Playgroud)

postgresql network compression

8
推荐指数
1
解决办法
2318
查看次数

是否有适用于 Linux 的 Microsoft SQL Server 2017 开发人员版?

我在 Ubuntu 上安装了 SQL Server 2016 Developer Edition,可免费用于开发目的:

SQL Server 2016 SP1 Developer 是一个功能齐全的免费版本,许可在非生产环境中用作开发和测试数据库。

我也想在 Ubuntu 上安装 SQL Server 2017。对于 Windows,在 SQL Server 下载页面上,有三个选项 - 试用评估、SQL Express(免费但有限)和 SQL Developer(对于非生产环境免费)。

但是,对于 Linux,只有在 Red Hat、Ubuntu 或 SUSE 上安装的链接。

在 Ubuntu 上安装时,SQL Server 2017 (v.Next) 说:

Enter the SQL Server system administrator password: 
Confirm the SQL Server system administrator password: 
Configuring SQL Server...

This is an evaluation version.  There are [174] days left in the evaluation period.
Run Code Online (Sandbox Code Playgroud)

是否有适用于 Linux 的 SQL Server 2017 …

sql-server ubuntu license sql-server-2017

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