【发布时间】:2021-11-23 21:20:15
【问题描述】:
我可以访问远程数据库,我想将几个视图的架构和数据转储到我的本地计算机上,并将其作为表加载到我的本地数据库中> 以一种快速简便的方式。
我缺乏运行CREATE TABLE AS (SELECT * FROM target_view) 的用户权限,否则这将很容易解决。换句话说,我想检索并重新创建 target_view 的“复合”模式 就好像它是一个表。
我确实不想要SHOW CREATE VIEW 的输出,因为这仅显示了一个复杂的SELECT 语句,它连接到远程我无法访问的各种表。我在 MySQL 8.x 中看到的一个问题是,当我在视图上运行 SHOW CREATE TABLE 时,此命令只是充当 SHOW CREATE VIEW 的别名(这是合理的)。
令人沮丧的是,我可以运行DESCRIBE 并查看这些视图的架构,因为它们是表。我真的只需要将此信息转换为CREATE TABLE 语句,而实际上无法运行CREATE TABLE。
如果不明显,关键是要避免手动重建这些视图的表格模式(因为它们将来可能会改变)。我还想避免对来自 CSV 转储的 20-30 个通用 VARCHAR 或 TEXT 列的通用表结构进行逆向工程的解决方案。
【问题讨论】:
-
您可以在 dba.stackexchange.com 上找到这个问题的一个很好的答案。这是边缘的“管理员”问题。
-
您是否有权运行 CREATE TEMPORARY TABLE?这不需要 CREATE 权限。
-
@BillKarwin 很好的建议,但不,我收到“拒绝访问”错误。
-
好的,那么您可能也没有该特权。您可以通过
SHOW GRANTS声明进行确认。