将视图从生产副本复制到数据仓库

bxpogfeg  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(405)

我的生产副本中有一个视图(它是一个只读数据库),我需要将其中一个视图复制到我的数据仓库中。
最好的办法是什么?
我无法从副本上的视图创建表。意思是我做不到 CREATE TABLE Table_From_View AS SELECT * FROM My_View; 我无法复制创建视图定义的所有表。其中一些包含敏感数据。
我肯定我错过了一些基本的东西。。。
思想?

sd2nnvve

sd2nnvve1#

在mysql中,视图不存储任何内容。它更像是一个别名或宏。它只是将查询逻辑传递给底层的基表。
您需要在创建视图的同一mysql示例上存在底层基表,并且在查询视图时,基表必须保持在同一mysql示例上。
如果只想复制视图的内容,因此不复制视图未选择的其他敏感数据,则必须创建基表来复制数据:

mysql> CREATE TABLE myview_base AS SELECT * FROM myview;

然后可以对该复制表执行逻辑转储:

shell > mysqldump --single-transaction mydatabase myview_base > myview_base.sql

然后将该转储文件恢复到数据仓库中,就像恢复任何其他sql转储文件一样。
另一种可能的策略:

SELECT * FROM myview INTO OUTFILE 'filename.csv';

这会将sql查询的结果转储到文件中。看到了吗https://dev.mysql.com/doc/refman/8.0/en/select-into.html
该文件将在数据库服务器上创建,因此如果您没有服务器的shell访问权限,则无法检索该文件。

相关问题