获取列表所有索引名称,列名和postgresql数据库表名的查询是什么?
我试图通过使用此查询获取数据库中所有索引的列表,但如何获取索引列表,列名称和表名称?
SELECT *
FROM pg_class, pg_index
WHERE pg_class.oid = pg_index.indexrelid
AND pg_class.oid IN (
SELECT indexrelid
FROM pg_index, pg_class
WHERE pg_class.oid=pg_index.indrelid
AND indisunique != 't'
AND indisprimary != 't'
AND relname !~ '^pg_');
Run Code Online (Sandbox Code Playgroud) 使用非超级用户创建这样的函数时,我收到以下错误:
ERROR: permission denied for language c
SQL state: 42501
创建的功能是:
CREATE OR REPLACE FUNCTION dblink_connect (text)
RETURNS text
AS '$libdir/dblink','dblink_connect'
LANGUAGE C STRICT;
Run Code Online (Sandbox Code Playgroud)
但是,如果我想向我的非超级用户授予语言C的许可,我会收到以下错误:
postgres=# grant usage on language c to caixa;
ERROR: language "c" is not trusted
那意味着,非超级用户无法使用C语言创建功能?或者还有什么我做错了吗?
我有一个名为itoa.cpp的示例c文件,如下所示:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i;
char buffer [33];
printf ("Enter a number: ");
scanf ("%d",&i);
itoa (i,buffer,10);
printf ("decimal: %s\n",buffer);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我使用以下命令编译上面的代码时:
gcc itoa.cpp -o itoa
我收到此错误:
[root@inhyuvelite1 u02]# gcc itoa.cpp -o itoa itoa.cpp: In function "int main()": itoa.cpp:10: error: "itoa" was not declared in this scope
这段代码有什么问题?如何摆脱这个?
我想在我的应用程序中做一些跨数据库引用.简而言之,我有两个名为meta和op的数据库.我想做一些选择查询从元数据库到op数据库中的表,如下所示,但得到以下错误.我尝试使用密码而没有密码.顺便说一句,caixa用户是非超级用户和我的目标服务器(op数据库服务器具有MD5身份验证模式.)
meta=> select * from dblink('dbname=op password=caixa','SELECT op_col from op_table') AS t(op_col varchar);
Run Code Online (Sandbox Code Playgroud)
错误:需要密码
详细信息:如果服务器未请求密码,则非超级用户无法连接.
提示:必须更改目标服务器的身份验证方法.
上面的错误消息中的提示是什么意思?我需要更改服务器的身份验证模式吗?在不更改服务器的auth模式(MD5)的情况下,我无法运行上述查询?
当我使用psql.exe运行SQL脚本时,我发现错误时没有收到错误代码.有没有办法得到psql错误代码?
我尝试将VERBOSITY设置为'verbose',但没有用:
\set VERBOSITY 'verbose'
Run Code Online (Sandbox Code Playgroud)
我使用psql版本psql(PostgreSQL)8.4.2.
我想将带有分隔符"〜,〜"的平面文件中的数据加载到PostgreSQL表中.我已经尝试过如下,但看起来对分隔符有限制.如果COPY语句不允许使用多个字符作为分隔符,有没有其他方法可以执行此操作?
metadb=# \COPY public.CME_DATA_STAGE_TRANS FROM 'E:\Infor\Outbound_Marketing\7.2.1\EM\metadata\pgtrans.log' WITH DELIMITER AS '~,~'
ERROR: COPY delimiter must be a single one-byte character
\copy: ERROR: COPY delimiter must be a single one-byte character
Run Code Online (Sandbox Code Playgroud) 如何在postgresql中使用copy语句从文件中加载数据,其中文件有一个转义字符作为分隔符到postgresql表中?
有没有其他方法将数据从textfile加载到PostgreSQL表中?
当我运行下面的写程序时,我收到以下错误.这有什么问题?
错误:
消息156,级别15,状态1,过程tbv21Setup,第11行关键字"VIEW"附近的语法不正确.
**
CREATE PROCEDURE tbv21Setup
AS
BEGIN
CREATE VIEW Cust_Address_View AS
SELECT customer.individual_id individual_id,
customer.tb_customer_id customer_id,
customer.customer_category_lkp customer_category_lkp,
ADDRESS.postal_code postal_code
FROM CUSTOMER
INNER JOIN INDIVIDUAL
ON (CUSTOMER.individual_id = INDIVIDUAL.individual_id)
JOIN
(SELECT address_id ,
a.individual_id ,
postal_code ,
obsolete_flag ,
tb_modified_date
FROM address a
INNER JOIN
(SELECT individual_id,
MAX(ISNULL((tb_modified_date),('01/01/1900'))) AS max_tb_modified_date
FROM ADDRESS
WHERE obsolete_flag = 0
GROUP BY individual_id
) AS xa
ON (xa.individual_id = a.individual_id
AND xa.max_tb_modified_date = ISNULL((a.tb_modified_date),('01/01/1900')))
WHERE a.obsolete_flag = 0
) AS ADDRESS ON …Run Code Online (Sandbox Code Playgroud) CREATE TABLE AS SELECTPostgreSQL中的语句不是使用具有NOT NULL原始表约束的列创建新表.
我的表tab1有col1和col2,没有空约束.
create table tab1 (col1 varchar(23) not null, col2 int not null)
现在我正在创建一个新表tab2,其中包含表tab2的定义和数据,如下所示:
将表tab2创建为选项col1,从tab1创建col2
但是tab2的col1和col2没有NOT NULL约束.如何从原始表中的新表列中获取确切的NOT NULL约束状态?
如果有任何方法可以使用CREATE TABLE AS SELECT非常感谢的语句来实现这一点.CREATE TABLE AS SELECTOracle,DB2和SELECT .. INTOSQLServer中的语句将NOT NULL CONSTRAINT与数据一起复制.
如何在PostgreSQL数据库中获取索引中列的位置?pg_index目录表中的indkey给出了该列表中该列的位置,但我希望列中的列的位置包含索引.
我们有一个用pl/sql(oracle)编写的函数,如下所示:
CREATE OR REPLACE PROCEDURE folder_cycle_check (folder_key IN NUMBER, new_parent_folder_key IN NUMBER) IS
parent_of_parent NUMBER;
ILLEGAL_CYCLE EXCEPTION;
CURSOR parent_c IS
SELECT parent_folder_key FROM folder
WHERE folder_key = new_parent_folder_key;
BEGIN
IF folder_key = new_parent_folder_key THEN
RAISE ILLEGAL_CYCLE;
END IF;
FOR parent_rec IN parent_c LOOP
BEGIN folder_cycle_check(folder_key, parent_rec.parent_folder_key); END;
END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)
现在,我必须在pl/pgsql(PostgreSQL)中重写相同的过程以实现类似的功能.请帮帮我发送pl/pgsql函数.
编辑(来自评论的格式化代码)
CREATE OR REPLACE FUNCTION folder_cycle_check(IN folder_key INTEGER, IN new_parent_folder_key INTEGER)
RETURNS VOID
AS $procedure$
DECLARE parent_of_parent INTEGER;
PARENT_C CURSOR FOR
SELECT parent_folder_key
FROM folder
WHERE folder_key = new_parent_folder_key; …Run Code Online (Sandbox Code Playgroud) 这段代码有什么问题?我收到Segmentation故障!
#include<stdio.h>
int main()
{
struct {
char* name;
int age;
} *emp;
char* empname = "Kumar";
int empage = 31;
emp->name = empname;
emp->age = empage;
printf("empname :%s\n",emp->name);
printf("empage :%d",emp->age);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
以及如何纠正这个程序的工作?