我的生产副本中有一个视图(这是一个只读数据库),我需要将其中一个视图复制到我的数据仓库中。
最好的方法是什么?
CREATE TABLE Table_From_View AS SELECT * FROM My_View;
我确定我在这里缺少一些基本知识...
想法?
答案 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
该文件将在数据库服务器上创建,因此,如果您无权访问该服务器的外壳,则将无法检索该文件。