使用 vertica_python 驱动程序以编程方式获取列长度

Programmatically get column lengths using vertica_python driver

是否可以 运行 命令,例如 \d schema.table_name; 到 vertica_python?我 运行 进入以下错误,表明它不喜欢前导反斜杠:

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

我实际上是在尝试获取程序中几个 VARCHAR 列的长度。我总是可以将命令放在一个文件中,运行 vertica -f my_file > out_file 并解析 out_file 但我正在寻找更好的方法。

只需对系统视图执行查询 (COLUMNS)。类似于:

select *
from columns
where table_schema = 'MYSCHEMA'
and   table_name = 'MYTABLE'
order by column_id

\dvsql 命令,不是服务器端命令。

由于您正在使用 vertica_python,另一种可能性是在执行查询后检查游标中的字段。如果您已经有一个结果集并且想知道数据类型,这很有用。不过,如果您已经有了结果,我可能只会使用这种方法。

为此,您可以查看 cursor.description

它应该有元素:

name
table_oid
attribute_number
data_type_oid
data_type_size
type_modifier
format_code