Vertica,描述表

4

我有一个Vertica数据库,需要描述一些表。在MySQL中,您使用describe table_name。我知道在Vertica中使用\d table_name。 此外,我需要通过Python进行操作,但是当我进行查询时:

cur.execute("\d table_name")

I get this problem:

vertica_python.errors.VerticaSyntaxError: Severity: ERROR, Message: Syntax error at or near "\", Sqlstate: 42601, Position: 1, Routine: base_yyerror, File: /scratch_a/release/vbuild/vertica/Parser/scan.l, Line: 1004, SQL: '\\d table_name'

有没有其他方法可以在Vertica中获取列和列类型呢?

cur.execute(r'\d table_name')是什么意思?请参考https://docs.python.org/2/reference/lexical_analysis.html#string-literals。 - Benjamin Bannier
尝试了不同的方法。例如在这种情况下:vertica_python.errors.VerticaSyntaxError: 严重性:ERROR,消息:在“\”附近的语法错误,Sqlstate:42601,位置:1,例程:base_yyerror,文件:/scratch_a/release/vbuild/vertica/Parser/scan.l,行:1004,SQL:'\d table_name' - Opperix
找到答案了,如果你想要获取列和类型,可以使用:select * from COLUMNS where table_name = 'table_name'。你可以通过table_schema和其他参数进行选择。这是我第一次接触 Vertica,认为这将会很有趣。 - Opperix
3个回答

13

为什么您的查询失败:

\d 命令是 vsql 的特定功能,这不是有效的 SQL 语句,例如您不能通过 ODBC 或 JDBC 使用它。

您有三个选项。首先是您已经在注释中提到的选项:

SELECT * 
FROM   v_catalog.columns 
WHERE  table_schema='schema' 
       AND table_name='table' 
ORDER  BY ordinal_position;`
第二种选择是导出该对象,这将提供完整的创建语句,包括投影。
SELECT export_objects('', 'schema.table');

第三个选项是导出表,这只提供了表定义:

SELECT EXPORT_TABLES('', 'schema.table');

第一组双引号表示将输出打印到STDOUT,第二组双引号是你想要导出的表格(或架构或所有对象)。


1
注意:第三个选项EXPORT_TABLES似乎需要在TABLE后添加一个S - Aziz Alto

0

描述Vertica表格的方法有很多种, 但最简单的方式如下:

\d table_name;
\dt tablw_name;

0

你可以使用 \d 或者通过下面的字典表获取它

select column_name, table_name
from v_catalog.columns
where column_name ilike '<column_name>'
and table_schema ilike '<table_name>'
order by column_name;

你还可以根据需要添加更多属性来获取所需的信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接