如何在 ActiveRecord 上执行 PostgreSQL 斜杠方法?

How to execute PostgreSQL slash methods on ActiveRecord?

我正在使用 Rails 4. 我正在尝试使用 ActiveRecord 中的 'execute' 方法列出所有带有 '\l' 的 PostgreSQL 数据库。已正确建立连接。

p = ActiveRecord::Tasks::PostgreSQLDatabaseTasks.new(configuration)
p.send 'establish_master_connection'
p.connection.execute('\l')

这里是错误:

ActiveRecord::StatementInvalid (PG::SyntaxError: ERROR: syntax error at or near "l"

当我使用 'no slash' 方法时它工作正常

connection.execute("DROP DATABASE IF EXISTS NOTHING")
=> #<PG::Result:0xc5e6094 status=PGRES_COMMAND_OK ntuples=0 nfields=0 cmd_tuples=0>

有什么想法吗?

你不能。以 \ 开头的命令是由 psql shell 本身实现的元命令 - 数据库服务器本身不知道它们的含义。

在列出各种内容的命令的特定情况下,这通常归结为查询 pg_catalog 中的表,例如

SELECT * FROM pg_catalog.pg_database 

对于数据库

SELECT * FROM pg_catalog.pg_table

用于表格。这些记录在案 here