使用 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
\d
是 vsql
命令,不是服务器端命令。
由于您正在使用 vertica_python
,另一种可能性是在执行查询后检查游标中的字段。如果您已经有一个结果集并且想知道数据类型,这很有用。不过,如果您已经有了结果,我可能只会使用这种方法。
为此,您可以查看 cursor.description
。
它应该有元素:
name
table_oid
attribute_number
data_type_oid
data_type_size
type_modifier
format_code
是否可以 运行 命令,例如 \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
\d
是 vsql
命令,不是服务器端命令。
由于您正在使用 vertica_python
,另一种可能性是在执行查询后检查游标中的字段。如果您已经有一个结果集并且想知道数据类型,这很有用。不过,如果您已经有了结果,我可能只会使用这种方法。
为此,您可以查看 cursor.description
。
它应该有元素:
name
table_oid
attribute_number
data_type_oid
data_type_size
type_modifier
format_code