Database 在Exasol中创建一个架构到另一个架构的副本
有人能帮我在EXASOL中创建副本吗?也就是说,我需要将所有表(包括视图、函数和脚本)从一个模式复制到同一服务器中的另一个模式。 例如:我希望复制模式A中的所有数据,而不是将其移动到模式B中。Database 在Exasol中创建一个架构到另一个架构的副本,database,exasolution,Database,Exasolution,有人能帮我在EXASOL中创建副本吗?也就是说,我需要将所有表(包括视图、函数和脚本)从一个模式复制到同一服务器中的另一个模式。 例如:我希望复制模式A中的所有数据,而不是将其移动到模式B中。 非常感谢。好的,这个问题由两个小问题组成 1如何复制架构中所有对象的DDL 如果只需要复制少量模式,最快的方法是使用ExaPlus客户端。右键单击schema name并选择createddl。它将为您提供创建所有对象的SQL。您只需在新模式的上下文中运行此SQL即可 如果您必须将其自动化,您可以查看以下
非常感谢。好的,这个问题由两个小问题组成 1如何复制架构中所有对象的DDL 如果只需要复制少量模式,最快的方法是使用ExaPlus客户端。右键单击schema name并选择createddl。它将为您提供创建所有对象的SQL。您只需在新模式的上下文中运行此SQL即可 如果您必须将其自动化,您可以查看以下官方脚本: 它为所有模式创建DDL,但可以调整为仅使用单个模式 2如何复制数据 这比较容易。只需运行以下SQL来生成INSERT。。。为每个表选择语句:
SELECT 'INSERT INTO <new_schema>.' || table_name || ' SELECT * FROM <old_schema>.' || table_name || ';'
FROM EXA_ALL_TABLES
WHERE table_schema='<old_schema>';
复制粘贴结果并运行它以生成实际副本。感谢您的建议: 为了复制模式中所有表的DDL,我有一种简单的方法可以为我们提供所有表的DDL: 选择t1.CREATE|u语句| t2.PK | |''从…起 当C.COLUMN|u默认值不为空时,选择C.COLUMN|u TABLE、'CREATE TABLE'| C.COLUMN|u TABLE | | | | | | group_concat'''| C.COLUMN|u NAME |''“| | | COLUMN| TYPE | case C.COLUMN_是_NULLABLE='true'或C.COLUMN_默认为'NULL',C.COLUMN_则是_NULLABLE='false' “DEFAULT”|| C.COLUMN|u DEFAULT end | |当C.COLUMN|u为_NULLABLE='false'时,则为“NOT NULL”end 按列排序顺序位置创建语句 来自EXA_所有_列C 哪里 upperC.COLUMN\u SCHEMA=upper'Source\u SCHEMA'和COLUMN\u object\u type='TABLE' 按C.COLUMN\u模式分组,按C.COLUMN\u表顺序按C.COLUMN\u表t1左联接 选择约束|表',主键'| |组|连接''| |列|名称| |'“'按顺序| | |'主键 从EXA_所有_约束_列,其中 constraint_type='PRIMARY KEY'和upperCOnstraint_SCHEMA=upper'Source_SCHEMA'按约束表t2分组 在t1上。列_表=t2。约束_表 1号订单 将源_模式替换为您的模式名称,它将生成可在EXAplus上运行的Create语句
对于复制数据,我使用了与您在第2步中提到的相同的方法。谢谢@wildraid!您能否共享ddl提取的官方脚本,因为您提供的链接需要一个Exasol客户帐户。@bear911,我建议创建一个免费社区帐户:它应该允许您查看所有SOL票证的内容。它是非常有用。