Sql 在Teradata中,如何编写所有存储过程和表的脚本?

Sql 在Teradata中,如何编写所有存储过程和表的脚本?,sql,database-schema,teradata,Sql,Database Schema,Teradata,我正在为Teradata安装中的一组现有数据库编写文档。我来自SQL Server背景。如何像在SQL Server中一样,使用Generate Scripts工具在Teradata DB中编写所有存储过程和表的脚本? 我可以显示各个表和SP,也可以从dbc.tables中选择所需的对象列表,但是如何使用动态SQL将这些名称列表提供给SHOW命令呢? 谢谢你的帮助。JK如果您有权访问BTEQ工具,您可以编写SQL来动态生成SHOW命令。可以使用EXPORT命令将此输出从BTEQ导出到平面文件。然

我正在为Teradata安装中的一组现有数据库编写文档。我来自SQL Server背景。如何像在SQL Server中一样,使用Generate Scripts工具在Teradata DB中编写所有存储过程和表的脚本? 我可以显示各个表和SP,也可以从dbc.tables中选择所需的对象列表,但是如何使用动态SQL将这些名称列表提供给SHOW命令呢?
谢谢你的帮助。JK

如果您有权访问BTEQ工具,您可以编写SQL来动态生成SHOW命令。可以使用EXPORT命令将此输出从BTEQ导出到平面文件。然后,输出文件可以反馈到BTEQ中,并针对数据库运行,该数据库的输出可以使用EXPORT命令导出为平面文件。清澈如泥

下面是一个示例BTEQ脚本,它可以为您提供一个想法,并为您指明正确的方向。它可能不是100%准确,但它应该给你足够的时间开始编写自己的脚本来完成手头的任务

.SET FOLDLINE OFF;
.SET WIDTH 1000;
.SET TITLEDASHES OFF
.OS rm {path to exported SHOW SQL file}
.EXPORT FILE={path to exported SHOW SQL file}

SELECT CASE WHEN T1.TableKind = 'T' 
            THEN 'SHOW TABLE ' || TRIM(T1.DatabaseName) || '.' || TRIM(T1.TableName) || ';'
            WHEN T1.TableKind = 'P'
            THEN 'SHOW PROCEDURE ' || TRIM(T1.DatabaseName) || '.' || TRIM(T1.TableName) || ';'
            /* Repeat for object types your interested in */
            ELSE ''
        END (TITLE '')
  FROM DBC.Tables T1
 WHERE DatabaseName = '{Database}';

.EXPORT RESET

.OS rm {path to SHOW output file}
.EXPORT FILE={path to SHOW output file}

.RUN FILE={path to SHOW SQL file}

.EXPORT RESET

位于的Teradata文档有助于填补TableKind域和BTEQ实用程序及其命令的空白。如果您遇到问题或有其他问题,请在上面编辑您的问题,并提供有关您尝试过的内容的更多信息,我或其他人都会乐意提供其他信息。

Rob,太棒了。只是我需要的。我读过关于BETQ的书,但不知道从哪里开始。你是位绅士。再次感谢。JK。