Bteq Scripts在两台Teradata服务器之间复制数据

时间:2011-05-31 19:59:24

标签: sql teradata

如何将数据从一个数据库中的多个表复制到另一个服务器上的另一个数据库?

这可以通过Teradata中的BTEQ脚本来实现吗?

如果是,请提供样本。

如果没有,除了使用平面文件之外还有其他选择吗?

4 个答案:

答案 0 :(得分:3)

使用BTEQ是不可能的,因为您已经提到两个数据库都驻留在不同的服务器上。

有两种解决方案。

  • Arcmain - 您需要先使用Arcmain Backup,它会创建包含表格数据的文件。然后,您需要使用Arcmain还原来恢复文件中的数据

  • TPT - Teradata Parallel Transporter。这是一款非常先进的工具。这不会创建任何像Arcmain这样的文件。它直接在两个teradata服务器之间移动数据。(Wikipedia)

答案 1 :(得分:2)

如果我理解您的问题,您希望将一组表从一个DB移动到另一个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手册以获取更多详细信息。

答案 2 :(得分:0)

还有一些选项可以让您从一个表复制到另一个表。

最简单的方法可能是编写一个使用其中一个通信层(ODBC,.NET数据提供程序,JDBC,cli等)的小程序,并使用它来获取select语句和insert语句。这需要一些工作,但它比试图学习如何编写TPT脚本的开销要小。您不需要任何“DBA”权限来编写自己的。

Teradata还出售其他一些隐藏了某些工具复杂性的应用程序。 Teradata Data Mover句柄在arcmain和tpt之类的工具之间提供了一个抽象层。对此工具的访问很可能仅限于DBA类型。

答案 3 :(得分:0)

如果要将数据从一台服务器移动到另一台服务器,那么 我们可以使用平面文件来完成此操作。 首先,我们通过任何实用程序(如bteq或fastexport)将数据从源表提取到平面文件。 然后我们可以借助mload,fastload或bteq脚本将这些数据加载到目标表中。