通过阅读 Python 中的 Oracle DDL 语句为 Redshift 创建 Create Table 语句

Posted

技术标签:

【中文标题】通过阅读 Python 中的 Oracle DDL 语句为 Redshift 创建 Create Table 语句【英文标题】:Creating Create Table statements for Redshift by reading Oracle DDL statement in python 【发布时间】:2018-06-12 20:22:40 【问题描述】:

我在 Oracle 数据库中有 5 个表。我需要在 AWS Redshift 中创建它们的类似结构。我正在使用 cx_oracle 连接到 Oracle 并将 ddl 转储到 csv 文件中。但是在 python 中为每种数据类型更改 DDL 以使其在 Redshift 中运行是一个非常乏味的过程。

在 Python 中有什么简单的方法吗?是否有任何库或函数可以无缝地做到这一点。

PS:我尝试为此使用 AWS Schema Conversion Tool。这些表是在 Redshift 中创建的,但是有一个小故障。在 Redshift 中,每种数据类型都翻了一番。

例如:Oracle 中的 varchar(100) 变成 Redshift 中的 varchar(200) 有没有人在使用 SCT 之前遇到过类似的问题?

【问题讨论】:

我能够通过编写 elif 语句来更改数据类型来为 redshift 创建一个 ddl。正在寻找一种更简单的方法。任何帮助表示赞赏。 【参考方案1】:

cx_OracleTools 项目,特别是该项目中的 DescribeObject 工具能够从 Oracle 数据库中提取 DDL。你也许可以使用它。

【讨论】:

我能够提取 Oracle DDL。我正在寻找一种将 DDL 更改为可以在 Redshift 中执行的 DDL 的方法。 Redshift 使用不同的数据类型名称。是否有任何库或包可以进行必要的 DDL 更改?到目前为止,我已经编写了自定义 if-else 语句来从 Oracle DDL 创建 Redshift DDL。 好吧,您可以使用 cx_OracleTools 的底层代码,并在写出元数据之前调整元数据的各个部分(例如数据类型)——这可能很有用,因为您可以了解点点滴滴,无需解析。除此之外,我对 RedShift 毫无帮助! 是的...这听起来是一个选择...会尝试回来。

以上是关于通过阅读 Python 中的 Oracle DDL 语句为 Redshift 创建 Create Table 语句的主要内容,如果未能解决你的问题,请参考以下文章

如何找到 ORACLE 包中的过程的最后一个 DDL? [复制]

ddl语句中的oracle区分大小写[重复]

oracle中的DML,DDL,DCL操作分别指的啥,请通俗点。

Oracle中的DDL,DML,DCL总结

oracle中DDL DML指啥?

oracle中DDL DML指啥?