如何解决Bteq脚本,用于在两个Teradata服务器之间复制数据
|| 如何将数据从一个数据库内的多个表复制到另一台服务器上的另一个数据库? 这可以通过Teradata中的BTEQ脚本实现吗? 如果是这样,请提供样品。 如果没有,除了使用平面文件外,还有其他选择吗?解决方法
如果我理解您的问题,则希望将一组表从一个DB移至另一个。
您可以在BTEQ脚本中使用以下语法来复制表和数据:
CREATE TABLE <NewDB>.<NewTable> AS <OldDB>.<OldTable> WITH DATA AND STATS;
或者只是表结构:
CREATE TABLE <NewDB>.<NewTable> AS <OldDB>.<OldTable> WITH NO DATA AND NO STATS;
如果您真的很聪明,则可以创建一个BTEQ脚本,该脚本在SELECT语句中动态构建上述语句,导出结果,然后依次在单个BTEQ脚本中运行新导出的文件。
CREATE TABLE <...> AS <...>;
可以提供许多其他选择。最好阅读《 Teradata手册》以获取更多详细信息。
, 使用BTEQ不可能做到这一点,因为您已经提到两个数据库都位于不同的服务器中。
有两种解决方案。
Arcmain-您需要首先使用Arcmain Backup,它会创建包含表中数据的文件。然后,您需要使用Arcmain Restore,它可以从文件中还原数据
TPT-Teradata并行传输器。这是一个非常高级的工具。这不会创建任何类似Arcmain的文件。它直接在两个Teradata服务器之间移动数据。(Wikipedia)
, 还有其他一些选项,使您可以从一个表复制到另一个表。
可能最简单的方法是编写一个较小的程序,该程序使用其通信层之一(ODBC,.NET数据提供程序,JDBC,cli等),并使用它来执行select语句和insert语句。这将需要一些工作,但比尝试学习如何编写TPT脚本要少。您不需要任何\'DBA \'权限即可编写自己的权限。
Teradata还销售其他应用程序,这掩盖了某些工具的复杂性。 Teradata数据移动器句柄在诸如arcmain和tpt之类的工具之间提供了一个抽象层。对该工具的访问很可能仅限于DBA类型。
, 如果要将数据从一台服务器移动到另一台服务器,则
我们可以使用平面文件来做到这一点。
首先,我们可以通过任何工具(例如bteq或fastexport)将数据从源表中提取到平面文件中。
然后我们可以借助mload,fastload或bteq脚本将此数据加载到目标表中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。