SQLMorph将传统SQL方言转换为现代SQL方言。此工具批量运行翻译。
sqlmorph-api的Python项目详细描述
如何使用SQLMorph
使用SQLMorph应用程序有两种主要方法,这两种方法都需要通过您的phData account进行身份验证:
如果您只需要运行几个查询,UI将是最简单、最友好的工具。但是,如果您有许多查询,并且希望跨目录(递归地)运行批处理作业,或者希望通过其他脚本化进程运行单个文件,SQLMorph还有一个python脚本可以完成此任务。
使用Python脚本
为了与脚本交互,您必须从UI检索auth令牌。这可以通过导航到UI中的api页面并单击Copy Auth Token
按钮来完成。
脚本要求:
- Python3
在任何时候,如果您想查看脚本的参数,可以使用python3 -m sqlmorph_api --help
运行命令,它将打印以下内容:
usage: sqlmorph_api.py [-h] [--url URL] [--debug] --source {mssql,hana,teradata,oracle,impala,netezza,snowflake} --target {impala,snowflake,hana,oracle} --auth-token AUTH [--input INPUT] --output OUTPUT [--db-url DB_URL] [--db-schema DB_SCHEMA] [--db-table DB_TABLE]
Utility for scripting access to the SQLMorph Api
optional arguments:
-h, --help show this help message and exit
--url URL SQLMorph API Url
--debug Run the CLI in debug mode
required arguments:
--source {mssql,hana,teradata,oracle,impala,netezza,snowflake}
Source dialect
--target {impala,snowflake,hana,oracle}
Target dialect
--auth-token AUTH Okta Access Token
--input INPUT File or directory to translate
--output OUTPUT Output directory path
database arguments:
--db-url DB_URL Database connection to translate directly from a database. The string is in Oracle EZConnect format USER/PASSWORD@//hostname:port/service_name
--db-schema DB_SCHEMA
Schema in database to interrogate. Wildcards can be post-fixed with %
--db-table DB_TABLE Table in database to interrogate. Wildcards can be post-fixed with %
从这个输出可以看出,脚本需要四个输入参数,您可以选择将脚本指向除生产环境之外的其他环境。url标志默认为production,不需要更改。下面是几个命令示例:
- 针对单个文件翻译
python3 -m sqlmorph_api --source impala --target snowflake --auth-token <REDACTED_TOKEN> --input statement.sql --output result/
- 根据目录翻译
python3 -m sqlmorph_api --source impala --target snowflake --auth-token <REDACTED_TOKEN> --input sql-scripts --output result
- 上面的命令将获取输入目录,遍历目录中的每个文件,运行转换,然后在输出目录中创建与输入目录相同的文件夹结构。新目录中的每个文件都将有目标转换结果。所有错误将在脚本末尾打印到stdout。在
- 根据Oracle数据库进行翻译
python3 -m sqlmorph_api --source oracle --target snowflake --auth-token <REDACTED_TOKEN> --db-url="HR/XXXXX@//oracle-hostname:1521/ORCL" --db-schema HR --db-table "%" --output result
- 上面的命令将查询oracle数据库中HR模式中的每个表。输出目录将包含一个包含源sql和翻译sql的目录。在
当python脚本运行时,stderr会进行大量日志记录。如果您想使其静音,可以将stderr重定向到/dev/null
Oracle
连接到Oracle需要cx_Oracle
包。安装这个库的最简单方法是Python轮子。因此,首先安装wheel
包,然后安装cx_Oracle
包:
然后安装Oracle Instant Client:
注意:在MacOS上,似乎包含了即时客户端,因此可能不需要执行此步骤。
- 下载Oracle Instant Client。在
- 解压缩并放在适当的目录中。例如
C:\oracle\instantclient_19_9
- 配置python以查找即时客户端安装。例如在Windows上
SET PATH=C:\oracle\instantclient_19_9;%PATH%
。有关其他操作系统,请参阅cx_Oracle documentation。在 - 运行SQLMorph eg
python3 -m sqlmorph_api --source oracle --target snowflake --auth-token <REDACTED_TOKEN> --db-url="HR/XXXXX@//oracle-hostname:1521/ORCL" --db-schema HR --db-table "%" --output result
- 项目
标签: