AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-31164

peterh's questions

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

Como desligar automaticamente o postgresql com tempo limite?

  • 5

Tenho aqui uma instância simples do PostgreSQL, gerada por um script de construção. O objetivo é fazer com que ele seja automaticamente desligado com segurança, caso não haja nenhuma nova solicitação de conexão por um tempo (cerca de 5 minutos).

Qual é a melhor maneira de fazer isso? postgresql.confe similares são surpreendentemente silenciosos em tal questão.

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

Como obter o último valor não nulo em uma coluna ordenada de uma tabela enorme?

  • 14

Tenho a seguinte entrada:

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

Espero o seguinte resultado:

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

A solução trivial seria juntar as tabelas com uma <relação e, em seguida, selecionar o MAXvalor em a 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;

No entanto, a execução trivial desse código criaria internamente o quadrado da contagem das linhas da tabela de entrada ( O(n^2) ). Eu esperava que o t-sql o otimizasse - em um nível de bloco/registro, a tarefa a ser feita é muito fácil e linear, essencialmente um loop for ( O(n) ).

No entanto, em meus experimentos, o MS SQL 2016 mais recente não pode otimizar essa consulta corretamente, impossibilitando a execução dessa consulta para uma tabela de entrada grande.

Além disso, a consulta precisa ser executada rapidamente, tornando inviável uma solução baseada em cursor igualmente fácil (mas muito diferente).

Usar alguma tabela temporária com suporte de memória pode ser um bom compromisso, mas não tenho certeza se pode ser executado significativamente mais rápido, considerando que minha consulta de exemplo usando subconsultas não funcionou.

Também estou pensando em desenterrar algumas funções de janelas dos documentos do t-sql, o que poderia ser enganado para fazer o que eu quero. Por exemplo, soma cumulativa está fazendo algo muito semelhante, mas não consegui enganá-lo para fornecer o elemento não nulo mais recente, e não a soma dos elementos anteriores.

A solução ideal seria uma consulta rápida sem código de procedimento ou tabelas temporárias. Alternativamente, também uma solução com tabelas temporárias é aceitável, mas iterar a tabela proceduralmente não é.

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

Existe uma maneira de ordenar uma tabela do PostgreSQL por sua chave primária automaticamente?

  • 5

Eu quero despejar todo o conteúdo de uma tabela, ordenado por sua chave primária . Intuitivamente, gostaria de fazer uma

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

Isso seria executado por uma ferramenta externa, conhecendo a lista das tabelas, mas não conhecendo suas chaves primárias.

Se não houver uma opção melhor, podemos assumir que todas as chaves primárias são de coluna única.

Estou usando o PostgreSQL-9.5, mas uma atualização é possível.

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

Despeje o banco de dados Oracle em um script SQL textual

  • 9

Estou pensando no que mysqldumpou pg_dumpestão fazendo. Assim, eles despejam um banco de dados ativo em um arquivo textual contendo as consultas SQL, que reproduzem todo esse banco de dados. No MySQL e no PostgreSQL, este é o formato normal de dump de banco de dados.

Existe no Oracle? Como pode ser feito?

Não é absolutamente um problema se não for uma coisa padrão da Oracle. Preciso de uma solução para o problema. Exportar tabelas únicas não é suficiente, estou pedindo o dump de um banco de dados inteiro.

É um ambiente de desenvolvedor reduzido de um grande projeto (com banco de dados de vários milhões de linhas), mas ainda com centenas de tabelas e uma estrutura muito complexa. E, eu quero jogar com ele rápido . Enquanto estou brincando com ele, também preciso ser capaz de executar modificações complicadas nele. Em um dump binário eu não posso fazer isso, em um textual eu posso.

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

Oracle: como consultar uma tabela se eu conheço apenas seu tablespace (não padrão)?

  • 0

Então. SQLPlus simplesmente dá para minha primeira tentativa (depois de um pouco de experiência com postgresql):

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

Eu tentei também SELECT * FROM MYTABLESPACE$MYTABLE(tentativa intuitiva) e simplesmente SELECT * FROM MYTABLEtambém, mas nada deu certo. Pesquisando isso fornece muitas informações sobre o gerenciamento de espaço de tabela, mas nada dessa questão trivial.

O que fazer?


Extensão nº 1: Bem, parece que houve realmente um pequeno equívoco sobre os tablespaces e os esquemas. Mas o problema ainda é bem visível: eu tenho acesso à dba_tablestabela, tenho acesso a um de seus registros, quero consultar a tabela descrita por aquela e não funciona.

Extensão #2: Aqui está o que eu fiz. Liguei sqlpluscom a systemconta ( 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 respostas
  • 197 Views
Martin Hope
peterh
Asked: 2014-09-17 04:52:25 +0800 CST

Qual é a melhor prática ao criar colunas booleanas no Oracle?

  • 4

Enfrentei novamente o grave problema, que o Oracle simplesmente não possui um tipo de coluna booleana. Eu preciso usar char(1), ou smallint, ou algum outro.

Qual é a melhor prática, como emular valores booleanos no Oracle?

(O consumo de espaço não é importante agora - mas uma boa cooperação com a linha java/hibernate foi importante).

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

Como indexar para desigualdade múltipla WHERE condições de pesquisa?

  • 0

Estou pensando no problema, se houver várias colunas nas quais a pesquisa deve funcionar o mais rápido possível.

Por exemplo, veja a tabela TEST(COL_A, COL_B)com um índice (árvore) TEST_IDX(COL_A, COL_B). Este índice pode ser usado para as seguintes WHEREcondições:

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

Mas o que fazer, se ambos os termos de condição estiverem usando desigualdade? Então, eu estou pensando em um WHERE COL_A<'x' AND COL_B<'y'? AFAIK, os índices de árvore de registro normais nesses casos não podem funcionar. Posso imaginar alguma estrutura de dados que possa tornar essas consultas também rápidas, mas acho que deveria usar uma estrutura de dados muito sofisticada como uma árvore simples.

Isso no MySQL existe? Ou em outros servidores SQL?

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

Como fazer com que o prompt do sqlplus tenha mais de 50 caracteres?

  • 3

Eu configurei um prompt em meu sqlplus glogin.sql um pouco longo, principalmente por causa de algumas variáveis ​​internas e sequência de controle. Ao iniciar o sqlplus recebo o seguinte erro:

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

... e sim, meu prompt está realmente truncado para 50 caracteres.

O que fazer? É possível de alguma forma aumentar esse limite? (Já tentei SET LONGe SET LONGCsem nenhuma alteração.)

(Reagindo ao comentário) Eu tenho esse prompt longo, porque tenho algumas sequências de controle nele, o que o torna tão bonito. E estou chamando-o por meio do rlwrapper, que faz com que as teclas normais (página para cima/para baixo, pesquisa de histórico, conclusão de tabulação, etc) também funcionem, assim como em um bom aplicativo de linha de comando.

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

Como gerar o carimbo de data/hora atual do Oracle em perl?

  • 1

Eu uso DBI. E eu quero fazer alguns como

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

Qual é o comando? Como poderia ser criado, o valor escalar perl ocaltimetem um formato muito complexo, otimizado para olhos humanos (fe Mon Apr 28 15:58:51 2014). Meu objetivo era algo como o unix gettimeofday()faz (devolvendo os segundos desde 1970.1.1), convertido por alguma string de formato, que posso deixar comer pelo Oracle.

Mas qualquer solução mais simples também está bem, se existir.

Ele precisa ser gerado em perl. INSERT ... (current_timestamp, ...)não está bem.

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

Como "redefinir" completamente uma instância do Oracle?

  • 4

Gostaria de descartar todas as entidades de uma instância do Oracle. Desejo excluir todas as tabelas, usuários, índices e assim por diante, como se fosse uma instância recém-criada. O resultado deve parecer, ou pelo menos se aproximar do ponto de vista dos clientes, como se eu tivesse excluído completamente e reinstalado a instância com as mesmas configurações.

Fazer isso com uma limpeza/reinstalação completa é lento e não é facilmente automatizável. Estou procurando melhores opções, mas é uma solução possível, se não houver.

Descartar os esquemas não é suficiente, porque algumas entidades ainda permanecem no local (por exemplo, usuários).

Existe uma maneira fácil de largar tudo, para atingir o estado inicial limpo e vazio, mas mais rapidamente?

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

Como o SQL*Plus se conecta ao Oracle sem um ouvinte?

  • 4

sqlpluspode ser usado mesmo se não houver ouvinte no sistema ou se não estiver em execução.

Como o SQL*Plus se conecta ao Oracle sem um ouvinte?

Posso conectar qualquer usuário usando SQL*plus, mesmo sem nenhum ouvinte em execução.

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

Como alterar a codificação de saída das ferramentas de linha de comando Oracle para UTF8?

  • 0

Estou usando uma instalação alemã do oracle 11.2.0g, que possui algumas ferramentas de linha de comando se comunicando com alguns caracteres não-ascii (ü, ö, etc.). Eles são escritos na codificação iso8859-1, mas preciso deles como utf-8 para alguns scripts. É possível?

Informação adicional:

  • SO: windows alemão 7 x64
  • Ferramentas: ferramentas de linha de comando no diretório bin/ da instalação do oracle, fe lsnrctl e similares
  • Linguagem de script: principalmente cmd.exe

A saída específica do idioma está bem, fornece a saída em alemão sem nenhum problema. O único problema é que vem em iso8859-1 e não em utf-8.

Ele foi convertido por um comando iconv de um cygwin, mas usei isso apenas como último recurso. O melhor seria se eu pudesse definir de alguma forma o utf-8.

Outras ferramentas (fe tools do cygwin) funcionam sem nenhum problema.

oracle-11g-r2 command-line
  • 1 respostas
  • 924 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve