我只想要表定义,而不想要视图或函数。
我有一个名为“cvp”的模式。我尝试:
pg_dump --schema-only -n cvp -t 'cvp.*' --format plain
我得到:
pg_dump: No matching tables were found
我也尝试不使用-n cvp
或更改-t
为-t *.*
-t cvp
.
我正在使用 PostgreSQL 11。
我只想要表定义,而不想要视图或函数。
我有一个名为“cvp”的模式。我尝试:
pg_dump --schema-only -n cvp -t 'cvp.*' --format plain
我得到:
pg_dump: No matching tables were found
我也尝试不使用-n cvp
或更改-t
为-t *.*
-t cvp
.
我正在使用 PostgreSQL 11。
我编写了一个接收和返回记录的 SQL 函数。我需要在 from 子句中使用收到的记录。我正在使用unnest(array[the_variable])
。
是否有特定的功能或结构来执行此操作?(类似的东西record_to_recordset(the_variable)
)
这是我的例子:
create type calculate_info_type as (super_code text, super_name text);
create function calculate_info(p_country country)
returns calculate_info_type
language SQL as
$SQL$
SELECT super_code, super_name
FROM unnest(array[p_country]), -- <=== HERE!!
lateral (select
prefix is not null as has_prefix
) g1,valores que tenga la tabla
lateral (select
case has_prefix when true then iso||'-'||prefix else iso end as super_code,
case has_prefix when true then name else name||' without phone prefix' end as super_name
) g2
$SQL$;
我在这里放了一个完整的运行示例:https ://rextester.com/XIRSW33377
PostgreSQL 可以NaN
在数字和浮点列和变量中包含(不是数字)值:https ://www.postgresql.org/docs/current/static/datatype-numeric.html#DATATYPE-FLOAT
https://dbfiddle.uk/?rdbms=postgres_10&fiddle=1fdf20510b1b6a1416754599c60fc93f
有没有办法获得NaN
不同的插入或更新目录到这样的值?
在这个问题中,我认为所有这些都是相同的:
insert into t (v) values ('NaN');
insert into t (v) values ('N'||'a'||'N');
insert into t (v) values (E'\116\101\116');
insert into t (v) values (chr(78)||chr(65)||chr(78));
update t set v='NaN';
我尝试这样的事情:
insert into numeros (id, n1, n2) values (5, 1e306/1e-306, 1e306/1e-306); -- not representable
insert into numeros (id, n1, n2) values (6, 0/0, 1/0); -- division by 0
数字和浮点数可以存储NaN
https://www.postgresql.org/docs/current/static/datatype-numeric.html
我有一个使用 PostgreSQL 数据库的工作程序,它对NaN
.
我想知道哪些表包含哪些字段NaN
(查看一些架构,而不是公共架构)。
有没有自动的方法来做到这一点?
后来我向该表的该字段添加了一个约束。
我正在输入类似的内容:
psql --single-transaction --quiet my_db < my_file.sql
当脚本失败时,我会收到很多行:current transaction is aborted, commands ignored until end of transaction block
.
在 linux 中,我可以使用| more
管道传输结果,但在 Windows 中,这可能需要很长时间(显示第一个错误,因为管道不是管道)。
我的问题:
有没有办法只得到第一个错误?