AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-31164

peterh's questions

Martin Hope
peterh
Asked: 2024-04-24 04:35:14 +0800 CST

如何超时自动关闭postgresql?

  • 5

我这里有一个简单的 PostgreSQL 实例,由构建脚本生成。目标是在一段时间内(例如 5 分钟左右)没有新的连接请求时自动安全关闭。

最好的方法是什么?postgresql.conf而类似的人在这样的问题上却出人意料地保持沉默。

postgresql
  • 1 个回答
  • 16 Views
Martin Hope
peterh
Asked: 2019-04-01 09:19:37 +0800 CST

如何在大表的有序列中获取最后一个非空值?

  • 14

我有以下输入:

 id | value 
----+-------
  1 |   136
  2 |  NULL
  3 |   650
  4 |  NULL
  5 |  NULL
  6 |  NULL
  7 |   954
  8 |  NULL
  9 |   104
 10 |  NULL

我期待以下结果:

 id | value 
----+-------
  1 |   136
  2 |   136
  3 |   650
  4 |   650
  5 |   650
  6 |   650
  7 |   954
  8 |   954
  9 |   104
 10 |   104

简单的解决方案是将表与<关系连接起来,然后选择 a 中的MAX值GROUP BY:

WITH tmp AS (
  SELECT t2.id, MAX(t1.id) AS lastKnownId
  FROM t t1, t t2
  WHERE
    t1.value IS NOT NULL
    AND
    t2.id >= t1.id
  GROUP BY t2.id
)
SELECT
  tmp.id, t.value
FROM t, tmp
WHERE t.id = tmp.lastKnownId;

但是,此代码的简单执行将在内部创建输入表行数的平方(O(n^2))。我希望 t-sql 对其进行优化 - 在块/记录级别上,要做的任务非常简单且线性,本质上是一个 for 循环(O(n))。

但是,在我的实验中,最新的 MS SQL 2016 无法正确优化此查询,导致无法针对大型输入表执行此查询。

此外,查询必须快速运行,使得类似简单(但非常不同)的基于游标的解决方案不可行。

使用一些内存支持的临时表可能是一个很好的折衷方案,但我不确定它是否可以运行得更快,考虑到我使用子查询的示例查询不起作用。

我也在考虑从 t-sql 文档中挖掘出一些窗口函数,什么可以被欺骗来做我想做的事情。例如,累积总和做了一些非常相似的事情,但我无法欺骗它给出最新的非空元素,而不是之前元素的总和。

理想的解决方案是没有过程代码或临时表的快速查询。或者,使用临时表的解决方案也可以,但程序上迭代表不是。

sql-server t-sql
  • 3 个回答
  • 10289 Views
Martin Hope
peterh
Asked: 2018-07-11 01:55:59 +0800 CST

有没有办法通过主键自动对 PostgreSQL 表进行排序?

  • 5

我想转储按主键排序的表的全部内容。直觉上,我想做一个

SELECT * FROM %table_name% ORDER BY %primary_key_of(table_name)%;

这将由外部工具运行,知道表的列表,但不知道它们的主键。

如果没有更好的选择,我们可以假设所有主键都是单列的。

我使用的是 PostgreSQL-9.5,但可以升级。

postgresql primary-key
  • 2 个回答
  • 9129 Views
Martin Hope
peterh
Asked: 2016-03-10 07:37:33 +0800 CST

将 Oracle 数据库转储到文本 SQL 脚本中

  • 9

我在想什么mysqldump或pg_dump正在做什么。因此,他们将活动数据库转储到包含 SQL 查询的文本文件中,从而重现整个数据库。在 MySQL 和 PostgreSQL 中,这是正常的数据库转储格式。

它存在于 Oracle 上吗?怎么做到呢?

如果它不是标准的 Oracle 东西,那绝对不是问题。我需要解决这个问题。导出单个表是不够的,我要求转储整个数据库。

它是一个大型项目(具有数百万行数据库)的简化开发环境,但仍然具有数百个表和非常复杂的结构。而且,我想快速玩它。当我在玩它时,我还需要能够对其执行棘手的修改。在二进制转储上我不能这样做,在文本上我可以。

oracle export
  • 4 个回答
  • 34445 Views
Martin Hope
peterh
Asked: 2016-02-20 03:38:43 +0800 CST

Oracle:如果我只知道它的(非默认)表空间,如何查询表?

  • 0

所以。SQLPlus 简单地给出了我的第一次尝试(在有一点 postgresql 经验之后):

SQL> SELECT * FROM MYTABLESPACE.MYTABLE;
SELECT * FROM MYTABLESPACE.MYTABLE
              *
ERROR at line 1:
ORA-00942: table or view does not exist

我也尝试过SELECT * FROM MYTABLESPACE$MYTABLE(直观的尝试)并且SELECT * FROM MYTABLE也很简单,但没有成功。谷歌搜索提供了很多关于表空间管理的信息,但这个微不足道的问题却一无所获。

该怎么办?


扩展#1:好吧,看起来对表空间和模式确实存在一个小误解。但问题仍然很明显:我可以访问该dba_tables表,我可以访问它的其中一条记录,我想查询该表所描述的表,但它不起作用。

扩展 #2:这是我所做的。我打电话sqlplus给system账号(sqlplus system/****):

SQL> SELECT * FROM (SELECT * FROM dba_tables WHERE tablespace_name='MYTABLESPACE') WHERE ROWNUM<=1;

OWNER                          TABLE_NAME                     TABLESPACE_NAME                CLUSTER_NAME                   IOT_NAME                       STATUS     PCT_FREE   PCT_USED  INI_TRANS
------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ -------- ---------- ---------- ----------
 MAX_TRANS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE  FREELISTS FREELIST_GROUPS LOG B   NUM_ROWS     BLOCKS EMPTY_BLOCKS  AVG_SPACE  CHAIN_CNT AVG_ROW_LEN
---------- -------------- ----------- ----------- ----------- ------------ ---------- --------------- --- - ---------- ---------- ------------ ---------- ---------- -----------
AVG_SPACE_FREELIST_BLOCKS NUM_FREELIST_BLOCKS DEGREE                                   INSTANCES                                CACHE                TABLE_LO SAMPLE_SIZE LAST_ANA PAR IOT_TYPE     T S
------------------------- ------------------- ---------------------------------------- ---------------------------------------- -------------------- -------- ----------- -------- --- ------------ - -
NES BUFFER_ FLASH_C CELL_FL ROW_MOVE GLO USE DURATION        SKIP_COR MON CLUSTER_OWNER                  DEPENDEN COMPRESS COMPRESS_FOR DRO REA SEG RESULT_
--- ------- ------- ------- -------- --- --- --------------- -------- --- ------------------------------ -------- -------- ------------ --- --- --- -------
EXAMPLEOWNER                   MYTABLE                   MYTABLESPACE                                                                                    VALID            10                     1
       255          65536     1048576           1  2147483645                                         NO  N
                                                       1                                        1                                   N                ENABLED                       NO               N N
NO  DEFAULT DEFAULT DEFAULT DISABLED NO  NO                  DISABLED YES                                DISABLED DISABLED              NO  NO  YES DEFAULT



SQL> SELECT * FROM MYTABLE;
SELECT * FROM MYTABLE
              *
ERROR at line 1:
ORA-00942: table or view does not exist
oracle
  • 2 个回答
  • 197 Views
Martin Hope
peterh
Asked: 2014-09-17 04:52:25 +0800 CST

在 Oracle 中创建布尔列时的最佳实践是什么?

  • 4

我又遇到了一个严重的问题,Oracle 根本没有布尔列类型。我需要使用char(1), 或smallint, 或其他一些。

什么是最佳实践,如何在 Oracle 中模拟布尔值?

(空间消耗现在并不重要——但与 java/hibernate 线的良好合作很重要)。

oracle datatypes
  • 2 个回答
  • 27967 Views
Martin Hope
peterh
Asked: 2014-05-29 00:47:10 +0800 CST

如何为多个不等式 WHERE 搜索条件建立索引?

  • 0

我正在考虑这个问题,如果有多个列,搜索必须尽快进行。

例如,查看TEST(COL_A, COL_B)带有(树)索引的表TEST_IDX(COL_A, COL_B)。该索引可用于以下WHERE条件:

  • WHERE COL_A='x' AND COL_B='y'
  • WHERE COL_A='x' AND COL_B<'y'

但是,如果两个条件项都使用不等式怎么办?所以我在想一个WHERE COL_A<'x' AND COL_B<'y'?AFAIK,在这种情况下,普通的记录树索引是行不通的。我可以想象一些数据结构可以使这样的查询也很快,但我认为它应该使用更复杂的数据结构作为一个简单的树。

这在MySQL中存在吗?或者在另一个 SQL 服务器中?

mysql index
  • 1 个回答
  • 1385 Views
Martin Hope
peterh
Asked: 2014-05-07 00:35:14 +0800 CST

如何使 sqlplus 提示超过 50 个字符?

  • 3

我在我的sqlplus glogin.sql 中设置了一个提示有点长,主要是因为一些内部变量和控制序列。启动 sqlplus 我收到以下错误:

String beginning "truncated_prompt..." is too long. Maximum size is 50 characters.
SQL>

...是的,我的提示确实被截断为 50 个字符。

该怎么办?是否有可能以某种方式使这个限制更高?(我已经尝试过了SET LONG,SET LONGC没有任何改变。)

(反应评论)我有这么长的提示,因为我有一些控制序列,这使它如此美丽。我通过 rlwrapper 调用它,这使得普通键(向上/向下翻页、历史搜索、制表符完成等)也可以正常工作,就像在一个好的命令行应用程序中一样。

oracle sqlplus
  • 1 个回答
  • 1926 Views
Martin Hope
peterh
Asked: 2014-04-29 06:10:59 +0800 CST

如何在 perl 中生成当前的 Oracle 时间戳?

  • 1

我使用 DBI。我想做一些像

INSERT INTO ... VALUES (the_generated_timestamp, ...);

命令是什么?它是如何创建的,perlocaltime标量值具有非常复杂的、针对人眼优化的格式(fe Mon Apr 28 15:58:51 2014)。我的目标有点像 unixgettimeofday()所做的(归还自 1970.1.1 以来的秒数),由一些格式字符串转换,我可以让 Oracle 吃掉它。

但任何更简单的解决方案也可以,如果存在的话。

它需要在 perl 中生成。INSERT ... (current_timestamp, ...)不行。

oracle perl
  • 1 个回答
  • 1587 Views
Martin Hope
peterh
Asked: 2014-04-09 08:02:44 +0800 CST

如何完全“重置”一个 Oracle 实例?

  • 4

我想从 Oracle 实例中删除所有实体。我想删除所有表、用户、索引等,就像它是一个新创建的实例一样。结果应该看起来,或者至少从客户端的角度来看非常接近,就好像我已经完全删除然后重新安装了具有相同设置的实例。

通过完全擦除/重新安装来执行此操作很慢,并且不容易自动化。我正在寻找更好的选择,但如果没有的话,这是一个可能的解决方案。

删除模式是不够的,因为一些实体仍然保留在原处(例如,用户)。

有没有一种简单的方法可以放下所有东西,达到最初的清洁和清空状态,但更快?

oracle
  • 3 个回答
  • 2621 Views
Martin Hope
peterh
Asked: 2014-04-08 01:10:05 +0800 CST

SQL*Plus 如何在没有监听器的情况下连接到 Oracle?

  • 4

sqlplus即使系统中没有侦听器,或者它没有运行,也可以使用。

SQL*Plus 如何在没有监听器的情况下连接到 Oracle?

即使没有运行侦听器,我也可以使用 SQL*plus 连接任何用户。

oracle sqlplus
  • 2 个回答
  • 6030 Views
Martin Hope
peterh
Asked: 2014-04-01 00:53:06 +0800 CST

如何将Oracle命令行工具的输出编码改为UTF8?

  • 0

我正在使用德语 oracle 11.2.0g 安装,它有一些命令行工具与一些非 ascii 字符(ü、ö 等)通信。这些是用 iso8859-1 编码写出的,但我需要将它们作为 utf-8 用于某些脚本。可能吗?

附加信息:

  • 操作系统:德语 Windows 7 x64
  • 工具:oracle安装的bin/目录下的命令行工具,fe lsnrctl等
  • 脚本语言:主要是cmd.exe

特定语言的输出没问题,它可以毫无问题地提供德语输出。唯一的问题是它来自 iso8859-1 而不是 utf-8。

它是由来自 cygwin 的 iconv 命令转换的,但我只是将其用作最后的手段。最好的是,如果我能够以某种方式设置 utf-8。

另一个工具(来自 cygwin 的 fe 工具)工作没有任何问题。

oracle-11g-r2 command-line
  • 1 个回答
  • 924 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve