我有一个使用Pandas转储到Postgres的表,而Pandas可以使用read_sql_table
命令很好地读取它,但是我似乎无法使用SQL来访问它。运行\dt
命令时,将公共模式下列出的表作为现有表之一。
List of relations
Schema | Name | Type | Owner
--------+------------------------------------+-------+----------
public | "e7b6a2e19789418e9e48fd34e981b036" | table | postgres
但是当我运行SELECT * FROM "e7b6a2e19789418e9e48fd34e981b036";
时,得到的关系不存在错误。我尝试了以下方法:
SELECT * FROM "e7b6a2e19789418e9e48fd34e981b036"
SELECT * FROM "public"."e7b6a2e19789418e9e48fd34e981b036"
GRANT USAGE ON SCHEMA public TO postgres;
当我运行SHOW search_path;
时,它显示"$user", public
应该是正确的,但是出于某种原因,Postgres一直说该关系不存在。
其他有用的信息:
关于可能导致此错误的原因有什么想法?
答案 0 :(得分:3)
您的表名包含双引号。
在标识符中嵌入双引号遵循与在字符串文字中嵌入单引号相同的规则:您需要将它们双引:
因此,该表的创建是这样的:
create table """e7b6a2e19789418e9e48fd34e981b036"""(...);
从中选择时,您需要使用相同的语法:
SELECT *
FROM """e7b6a2e19789418e9e48fd34e981b036""";