【发布时间】:2022-01-16 17:30:42
【问题描述】:
我应该遵循什么方法来使用 python 从 teradata 数据库下载 DDL、DML 和存储过程。
我已经创建了示例代码,但是下载这些 sql 文件以进行数据迁移过程的方法是什么。
udaExec = teradata.UdaExec(appName="HelloWorld", version="1.0",logConsole=False)
session = udaExec.connect(method="odbc", system="xxx",username="xxx", password="xxx");
for row in session.execute("show tables {} > {}".format(tables, export_tables)):
print(row)
与使用 mssql-scripter 下载 .sql 文件的 MSSQL 不同,teradata 是否提供任何此类下载选项。另外,它是否支持下载序列、视图和过程?
对于架构迁移过程,从 teradata 作为源下载这些文件的最佳方法应该是什么?
【问题讨论】:
-
你考虑过使用FastExport utiliity吗?您可以使用它们的访问模块导出到 S3、HDFS、Kafka、本地文件系统。
-
数据库不存储 DML,除非你的意思是记录了什么?仍然不确定这是否有意义。对于 DDL,您可以使用数据字典视图(tablesv 等)来构建 show view/table/etc 语句。
-
对于 Python 的新开发,最好使用支持的
teradatasql包而不是teradata。如果存储过程是从存储过程语言编译的,则将源存储在数据库中是默认的但可选的。如果存储,SHOW PROCEDURE 将检索它。否则,对于 SPL 过程以及任何用 Java 或 C/C++ 编写的过程,SHOW 将仅返回 CREATE PROCEDURE 语句。顺便说一句 - 您需要为每个对象发出单独的 SHOW,并将其视为 SELECT - 使用游标并获取结果集, -
没有。我不相信有任何内置功能或 python 库可以减轻负担。这完全是关于在
DBC和SHOW语句中查询元数据。如果您要从 Teradata 迁移,也许您要迁移到的平台可以提供帮助? -
查询 DBC.TablesV 以构建对象名称/类型的列表。使用游标对每个对象执行 SHOW 语句以获取 DDL 文本作为结果集。从光标中获取文本并将其写入一个或多个文件。至于将所有行逆向工程为 INSERT VALUES(您似乎将其称为“提取” DML),这需要付出更多的努力,并且生成的文件会更大。可以做,但效率不高;最好使用某种“批量”数据传输实用程序。
标签: python teradata teradatasql