我有一个包含3列的表:
customer_name varchar
,account_type varchar
,current_balance double precision
当前_余额的示例值:
1200
1500.5
1500
它以我想要的方式格式化,但在开头添加了一个空格。如何解决这个问题?有没有更好的格式化方法
to_char(current_balance, 'FM9999999999999999D99')
发件人:
FM:前缀填充模式(抑制填充
空格和零)
如果需要特
我有一个表,其中包含用户对故障问题的评论:
create table related_comment (
id varchar(20) references trouble_noreset,
username varchar(20) not null,
comment varchar(320) not null,
created timestamp default current_timestamp
);
它工作正
我有一个应用程序,它读取现有PostgreSQL 9.1数据库的结构,将其与“应该”状态进行比较,并相应地更新数据库。大多数情况下,这很好。但是,我现在在读取当前数据库结构死锁时有几个实例。查询负责读取现有外键:
SELECT tc.table_schema, tc.table_name, tc.constraint_name, kcu.column_name,
ccu.table_schema, ccu.table_name, ccu.column_name
FROM infor
我们正在部署我们自己的测流仪,非常像美国地质勘探局的测流仪:这样我们的皮划艇运动员就知道是否有足够的水来划水,而不必浪费时间和汽油开车去那里。我们希望在横跨东部和中部时区的东南白水区安装一些这样的装置
我使用记录的默认值current_time来存储插入记录的时间。我想稍后使用MM/DD/YYYY HH12:MI AM TZ格式显示数据,该格式输出的读数类似于2012年12月3日凌晨01:00 CDT。我还想让输出知道日光节约时间的变化,因此前一句的最后一部分将在CST和CDT之间变化,当我们“
我想对插入到表中的数据执行一些业务验证,并且在执行此操作时需要检查另一个表中的数据。实现这一点的方法似乎是在PostgreSQL中为每一行使用插入前触发器,如果新数据验证失败,我可以从它调用的函数中返回NULL,以防止插入
是否有任何方法可以返回描述验证错误的错误消息?用于异常:
39.8。错误和消息
使用RAISE语句报告消息并引发错误。
[…]
异常引发错误(通常会中止当前事务)
所以你可以在你的触发器里这样说:
raise exception 'Say something useful a
我想在PostgreSQL安装中列出liferay数据库中的所有表。我该怎么做
我想从应用程序中执行SELECT*应用程序是my liferay db中的一个表。这是怎么做到的
以下是我所有数据库的列表:
postgres=# \list
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
我创建了一个新的Heroku应用程序,然后将Dev Heroku Postgres db连接到它。
在应用程序的活动日志中,我看到:
v07 : Attach HEROKU_POSTGRESQL_GOLD resource 5 minutes ago
v06 : Deploy 076b03a 19 minutes ago
v05 : Add config 19 minutes ago
v04 : Add DATABASE_URL config 19 minutes ago
v03 : Attac
我有一个名为users\u import的表,我正在解析和导入CSV文件。如果用户已经存在,我想使用该表更新我的用户表,如果不存在,则插入。(这实际上是一个非常简单的例子,我正在尝试做的事情要复杂得多。)
我正在尝试做类似的事情:
以下是表定义和查询:
CREATE TABLE users (
id INTEGER NOT NULL UNIQUE PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE users_import (
我需要在TRUNCATE表之后,重置他的序列,为此我做:
SELECT setval('mytable_id_seq', 1)
之后,当在表中插入行时,序列从2开始,而不是1
如何重新输入序列值,使新的第一个值为1
SELECT setval('mytable_id_seq', 0) // gives error that value is out of range
使用第三个参数作为setval():
setval(yourseq,1,false)
或者改变顺序:
alter seq
NewRelic提供了很好的数据库分析,但是它似乎只跟踪web应用程序的事务
我独立管理服务器,这些服务器查询并加载我的Heroku postgresql数据库。是否有一种方法可以对数据库活动进行诊断和分析,以使其包括所有与之相关的连接?New Relic application monitoring将仅收集数据库查询的数据,这些数据库查询是正在监视的web事务或后台任务的一部分。如果您使用的是NewRelic支持的语言之一来查询您的数据库,则可以将该代码作为后台任务进行跟踪(请参阅)。如果您想
我正试图让这个查询运行得更快。似乎按质量字段排序是真正减慢速度的原因(该表大约有500万行)-也许有一个索引可以用于此
查询:
SELECT "connectr_twitterpassage"."id", "connectr_twitterpassage"."third_party_id", "connectr_twitterpassage"."third_party_created", "connectr_twitterpassage"."source", "connectr_twitterp
我是sqlAlchemy的新手,我正在尝试创建一个手动对象关系映射,映射到我的Flask应用程序中已经存在的postgresql数据库。我正在使用。但是,它没有说明如何使用backref创建模型之间的关系。到目前为止,这是我的models.py类,唯一给我带来麻烦的是backref。我试图在用户和F_联盟(许多幻想联盟对一个用户)之间建立一对多的关系。运行文件models.py时,出现以下错误:
<User u'ivan'>
<F_League u'First Fantasy
我对pgSQL非常陌生
有人能帮助解决这个错误吗
ERROR: query has no destination for result data
HINT: If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT: PL/pgSQL function prac_data.document_get_document_title(integer) line 8 at SQL statement
如果我进行一个查询,将m行连接到n个结果中的每一个,我将得到总共n*m个结果行(每个结果将有m行连接到它)
如果我通过网络连接,n*m行是否会通过网络发送,或者PostgreSQL软件是否足够智能,能够以更短的方式表示它?(即n1*(m1,m2,m3)而不是n1m1,n1m2,n1m3等。)我相信简单的答案是否定的
从文档:
在简单查询模式下,检索值的格式始终为文本,
除非给定命令是从用声明的游标获取的命令
二进制选项。在这种情况下,检索到的值是二进制的
格式。RowDescription消息中
我正在尝试从损坏的Odoo安装中恢复数据(uprade被搞砸了)
我已经使用postgresql(psql)将所有表导出到CSV。我也能处理许多关系
对于许多关系,我需要一种方法,通过编程找出哪个数据库表包含关系详细信息(两个模型的ID)。我尝试使用xmlrpc从ORM“fields\u get”函数获取数据。字段定义返回一个字典,其中有一个名为“relation”的键。但是,该键只包含关系中涉及的其他表/模型的名称。对于许多关系,还有第三个表。我找不到odoo存储此表名称的位置
示例数据:
让
有没有一种方法可以告诉postgres“中止任何已获取并持有锁超过指定毫秒数的语句”
我在postgres中发现了以下两种说法:
语句\u超时:中止任何超过指定毫秒数的语句
lock\u timeout:在尝试获取锁时,中止等待时间超过指定毫秒数的任何语句
详情如下:
然而,两者都不是我所需要的。第一个语句过于通用(适用于尚未获取锁的语句),而第二个语句将中止错误的语句(即正在等待的语句;而不是已获取锁的语句)
仅供参考:我们的用例用于自动中止可能导致停机的数据库迁移
我有一个float值来删除其中的空白
下面是一个例子
在SQL Server中:在SQL Server中,我使用了以下脚本
DECLARE @f1 FLOAT = 74.3658319091568;
SELECT REPLACE(@f1,CHAR(160),'');
do
$$
DECLARE
v_f1 float = '74.3658319091568';
v_f3 text;
BEGIN
SELECT regexp_replace(v_f1::varchar
在从MySQL迁移到Citus集群的过程中,我使用了rangedistribution方法。迁移已完成,但现在我想将分发方法更改为hash
有没有办法将已有数据表的分发方法从range更改为hash
我提出了以下程序,但不确定它是否有效:
更新pg_dist_shard表的minvalue和maxvalue列,查看所有正在更改的碎片
将pg\u dist\u分区表的碎片存储类型列从r更新为h
COMMIT
这是一个好问题。目前,Citus并没有提供一种直接的方法来更改现有数据的分区类型
在范围分
似乎无法创建此函数,即使我清空了所有的DECLARE块和BEGIN-END块并尝试返回一个字符串。有人能帮我解决我在这里做错的事吗
尝试在pgAdminIII(Ubuntu)中执行此操作:
获取以下错误:
ERROR: syntax error at or near "CREATE"
LINE 1: CREATE OR REPLACE FUNCTION split_country()
^
********** Error **********
ERROR: syntax e
说jsonb比EAV快
不知道这个结论是否过于简化了
我们正在创建一个需要支持多种产品的市场
与EAV相比,JSON似乎更受欢迎
所以我的问题是,使用JSONB比使用EAV来描述产品属性更好吗
我需要一种自动方式来仅更改到PostgreSQL数据库的连接的servername参数
我在研究中发现的唯一方法是通过PowerShell脚本,按照下面的说明进行操作。它声明Set-OdbcDsn可以修改、添加或删除连接属性
我有以下脚本:
$DsnArray = Get-OdbcDsn -DriverName "PostgreSQL ANSI" |
Where-Object {($_.Attribute["Servername"] -eq "oldServer")}
S
我正在运行Postgresql 9.5.2服务器,偶尔会看到如下消息:
错误:检测到死锁
详细信息:进程1234等待事务3042999324上的ShareLock;被进程5678阻止。
进程5678等待事务3042999328上的ShareLock;被进程1234阻止。
提示:有关查询详细信息,请参阅服务器日志。
其中:锁定与“资产”相关的元组(5389,30)时
如果它包含关于导致死锁的行或列的任何信息,它将帮助我调试首先导致错误的大错误。我在询问问题时查找正确的术语时找到了它:tuple指的
我正在从postgresql数据库读取数据
select id as x , y from myTable
并将其发送到客户端并显示到highchart中。
如果我发送数据
{
"x" : 123,
"y" : 0.12
}
它显示正确。
但当我在x中发送日期时,它不会查看图表上的任何数据
select time_created::timestamp::date as x , y from myTable
{
"x" : "2017-05-09",
"y"
我不熟悉烧瓶和炼金术。任何帮助都会很好
我的模型如下:
class ReferentialDatum(db.Model):
__tablename__ = 'referential_data'
sid = db.Column(db.Integer, primary_key=True, nullable=False)
venues = db.Column(db.JSON, primary_key=True, nullable=False)
exchange_tic
我很想知道为什么下面的IF(previous\u foo.NOT NULL)条件失败,因为将此行更改为IF(previous\u foo.total NOT NULL)计算结果为true
CREATE OR REPLACE FUNCTION foo_total(the_bar bar)
RETURNS numeric
LANGUAGE plpgsql
STABLE
AS $$
DECALRE
previous_foo foo;
BEGIN
我知道,对于有许多INSERTs和DELETEs的表,最好使用serial类型作为主键
但是,对于具有标准数据(如大陆、国家、性别、选项)的表,插入的情况很少发生,删除的情况几乎从未发生,并且任何插入的操作都严格由“管理员”完成,使用串行类型是否仍然是更好的选择
使用串行类型(序列)的开销是多少
Tia的开销非常小:一行输入。从PostgreSQL 10开始,您可以使用ANSI SQL。开销基本相同,意味着根本没有开销。serial不是性能特性
它的用途是自动为列指定唯一值,通常作为人工主键。谢
我试图使用以下命令在docker终端中建立db:
psql -h 192.168.99.100 -p 15432 -U postgres
但是,我收到以下错误:bash:psql:command-notfound
你能帮我弄明白可能是什么问题吗
提前谢谢 您需要在容器中执行此命令,而不是在终端本身中执行
docker exec -it <postgres_container_id_or_name> psql -h 192.168.99.100 -p 15432 -U postgre
如果我是正确的,SQLite会为每个文件存储一个数据库,并且一个文件不能存储多个数据库
PostgreSQL如何以文件的形式存储数据库?它是否也为每个文件存储一个数据库,并且一个文件不能存储多个数据库?(SQLite在或中时使用多个文件。)
PostgreSQL数据库文件布局记录在其:
每个表和索引都存储在单独的文件中。对于普通关系,这些文件以表或索引的filenode编号命名,可以在pg_class.relfilenode中找到。[…]除了主文件(a/k/a main fork)之外,每个表和
如何从PostgreSQL中的JSON类型列进行查询?假设以下是包含JSON类型列validDates的我的实体:
//我的菜单-实体类
@实体()
导出类菜单{
@PrimaryGeneratedColumn('uuid')
id:字符串;
@列('json',{nullable:true})
validDates?:ValidDateClass;
}
//ValidDateClass
导出类ValidDateClass{
[键:字符串]:布尔值;
}
我们在Jelastic中管理多个Java+PostgreSQL环境。我们的PaaS提供商使用Jelast平台5.4版
在每个环境中,我们都有一个cron任务,该任务调用一个shell脚本,通过PostgreSQL 9.4的pg_dump生成每日gzip数据库备份。这个脚本已经运行多年了,但最近它停止了工作。脚本如下所示:
#!/bin/bash
DATE=`date +"%Y-%m-%d_%H-%M-%S"`
DB_NAME="my-backup"
FILE="$DB_NAME-$DATE.ba
使用gorm&postgres在Golang中编写Web服务器时,我对以下代码中第二次循环迭代的具体情况产生了误解:
...
for _, t := range tasks {
newDbConn := db.SchoolServerDB.Debug().New()
err = newDbConn.Where("id = ?", t.DayID).First(&day).Error
if err != nil {
return errors.Wra
我希望Postgres在进行字符串比较时将前导空格作为字符串的一部分。但是,9.5版并非如此
select ' s' > 'ny';
?column?
----------
t
(1 row)
我希望它返回false,我认为应该返回false,因为空格的ASCII值小于'n'。是否有一些设置需要更改,以便返回false?请尝试:
select ' s'::bytea > 'ny'::bytea;
我参加了11级博士后考试,效果不错。请参阅。
排序规则功能允许指定每列甚至每项操
我想用以下结构查询我的表:
Table "public.company_geo_table"
Column | Type | Collation | Nullable | Default
--------------------+--------+-----------+----------+---------
geoname_id | bigint | | |
date
我想将csv文件复制到表中。所有csv文件列都映射到表列。但表中有一个自动递增列
例如:
test.csv文件有3列A、B、C。相对值为“城市”、“姓名”、“性别”
testtable还有4列,分别为序号、A、B、C。序号为自动递增列
从“test.csv”分隔符、“csv”复制到testtable
它将有一个错误:复制表格ST,第1行,序号:“城市”
事实上,我希望第一行是
seq_no---A-------B-------C
1 city name sex
我无法
我已使用以下方法从服务器进行数据库备份:
pg_dump-U postgres-d machine-s--disable triggers>aftrn.sql
当我尝试使用以下方法将该数据恢复到本地系统时:
psql-U postgres-d usernet
我正试图使用带有postgres R2DBC驱动程序的Spring boot Webflux从数据库中获取对象列表,但我收到一个错误消息:
value ignored org.springframework.transaction.reactive.TransactionContextManager$NoTransactionInContextException: No transaction in context Context1{reactor.onNextError.localStrate
提前道歉。。。冗长的问题
假设我有一个表table_x,其中有20个字段:
table_x_id (identity pk)
int1
int...
int8
text1
text...
text8
jsonb1
jsonb2
现在假设我想在表x中保持对分组数据的快速访问(例如,字段int1、int2、text1\u id、text2\u id和jsonb1)。称之为报告1。在提出这个问题时,数据并没有真正发挥重要作用,但这里有一个来自报告1的虚构片段:
+------------------
这是命令行,看起来很简单,我已经阅读了这个链接()上的文档,检查了我的postgresql版本,当我运行代码时,它给出了这个错误
copy (select * from TABLE_NAME) TO '/home/name/teste.csv';
文件在那里,用“pwd”检查路径,一切似乎都正常,最后还用“with CSV”尝试了代码,什么都没有。
有人看到我没有的东西吗?要使此命令起作用,数据库服务器上必须有/home/name,操作系统用户postgres必须具有对该目录的写入权限。文件t
触发时,下面的查询将给出一个错误:子查询返回的多行用作表达式
选择表\u name\u 1.column\u name='ABC'时的大小写
然后从表2中选择列名称,其中列名称3='XYZ'
else table_name_1.column_name作为table_name_1的结果结束 子查询从表_name_2中选择列_name_2,其中列_name_3='XYZ'返回多行。这就是您需要解决的问题。表2上的数据完整性问题可能重复查找。列_name_3至少有2行包含值XYZ。要回答的问题是是否有
因此,我使用Kotlin Exposed在我的postgresqldb上创建用于身份验证的表
这个表应该在我的数据库中的一个专用模式中,简单地说就是:authentication。很好,我可以使用以下方法定义和创建表:
object UserTable: Table("authentication.user") {
val id = integer("id").primaryKey().autoIncrement()
val name = varchar("name", 200)
v
从Informatica更新postgresql数据库需要花费大量时间。从客户端发出的查询很慢。可以进行任何配置更改以加快更新速度?没有足够的信息更新此配置。不过,在上述情况下—
1.请检查您是否在Informatica及其索引中使用了正确的键列。
2.检查odbc软件是否已更新。3。还要检查最终表格的大小。如果它很大,那么你必须需要一个索引。
3.还要检查插入或更新是否需要时间。如果在加载之前删除所有索引,并在加载之后重新创建,则插入速度可能会很快。您可以从pgadmin在target中触发一
尝试使用C3P0休眠时出现以下异常
[main] ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - [Amazon](500310) Invalid operation: subquery in FROM must have an alias
Position: 15;
Exception in thread "main" org.hibernate.exception.SQLGrammarException: Error acc
标签: Postgresql
postgresql-copypostgresql-12main-memory-database
一段时间以来,我一直在考虑迁移到RAMdisk的想法。我知道它的风险,但只是想做一点基准测试。我刚才有两个问题:(a)在阅读查询计划时,它是否仍能区分磁盘和缓冲区命中率?如果是这样的话,我是应该假设两者都同样昂贵,还是应该假设两者之间存在差异?
(b) RAM磁盘不是持久性的,但如果我想将一些结果导出到持久性存储,是否需要采取一些预防措施?是否与平常一样,例如复制命令?我不建议在PostgreSQL中使用RAM磁盘进行持久存储。通过仔细调整,您可以使PostgreSQL使用的磁盘I/O不会超过使
是否有任何标志或选项可以设置为禁止Postgres降低查询大小写?(即selectfirstname,lastName,…被Postgres转换为selectfirstname,lastName,…)
是的,我已经知道如果您使用双引号,它将保留大小写。我知道,由于这种恼人的行为,大多数人建议不要使用区分大小写的列,强制用户只使用Pascal命名模式以外的其他命名模式,比如snake命名模式。我不明白为什么这种行为是内置的。根据标准,SQL标识符必须不区分大小写,除非引用。所以,不,您不能改变这种
为了处理运行Kotlin/SpringBoot应用程序时出现的以下错误(完整堆栈跟踪),我已经咨询了许多方法/帖子/堆栈溢出问题:
2020-04-22 18:33:56.823 ERROR 46345 --- [ restartedMain] o.s.boot.SpringApplication : Application run failed
org.springframework.beans.factory.BeanCreationException: Er
我正在尝试在WSO2流媒体集成商和本地Postgres DB之间设置更改数据捕获(CDC)
我已经将Postgres驱动程序(v42.2.5)添加到SI_HOME/lib中,并且我能够从Siddhi应用程序中读取数据库中的数据
我遵循这个示例来实现CDC,并使用pgoutput作为逻辑解码插件。但当我运行应用程序时,我会得到以下日志
[2020-04-23_19-02-37_460] INFO {org.apache.kafka.connect.json.JsonConverterCon
我有两个表格“临时用户”和“评级”
TABLE 1 (temp_users)
temp_user_id(pkey) | ip_address | total_ratings
-----------------------------------------
| |
| |
我想显示所有依赖于Postgres 13中源表任何列的视图和表。我已经找到了解决方案,但它只打印视图,而不打印可能包含一列的依赖表,该列将源表的任何列引用为外键。
仅适用于视图的解决方案是:
SELECT dependent_ns.nspname as dependent_schema
, dependent_view.relname as dependent_view
, source_ns.nspname as source_schema
, source_table.relname as
我不知道这是否可能,但这是个问题。如果paramvalue=0,我尝试更改操作符=by>
AS $BODY$
declare
operator text;
begin
operator:='=';
if (paramvalue = 0) then
operator:='>';
end if;
select * from tablaname where id @operator 20
谢谢 我认为重载运算符比这种行为所需的更复杂。您可以尝试改用CASE语句
SELECT *
我试图使用一个日期值作为起点,在单个postgres查询中构造一个日期范围。日期值类似于
按描述限制1的升级\u从帐户订单中选择升级\u
然后将其作为起点。然后我想做一些类似的事情
从升级日期>=基准日期-2天和升级日期