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

时间:2018-06-19 23:44:05

标签: mysql amazon-rds data-warehouse database-replication

我的生产副本中有一个视图(这是一个只读数据库),我需要将其中一个视图复制到我的数据仓库中。

最好的方法是什么?

  • 我无法从副本上的视图创建表。表示我不能CREATE TABLE Table_From_View AS SELECT * FROM My_View;
  • 我无法复制所有创建视图定义的表。其中一些包含敏感数据。

我确定我在这里缺少一些基本知识...

想法?

1 个答案:

答案 0 :(得分:1)

在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

该文件将在数据库服务器上创建,因此,如果您无权访问该服务器的外壳,则将无法检索该文件。