SQL迁移工具

    下载, 并重命名为 openlk-sql-migration-cli, 可以运行该命令chmod +x让它变成可执行的, 然后运行它。

    交互模式

    该工具支持交互模式运行。例如:

    下面是一些常用的命令:

    命令描述
    !chtype value修改当前会话的源sql类型
    exitquit退出交互模式
    history获得前面的输入语句
    替换帮助信息

    批处理模式

    该工具还可以获取参数并以批处理模式运行。该模式有五个参数,分别是“file”、“sourceType”、“execute”、“output”和“config”。 各参数的含义如下:

    参数名称描述
    —file or -f包含SQL语句的文件,以“;”分隔。文件中的所有SQL都可以进行批量转换。
    —type or -t输入SQL语句的类型,如hiveimpala。可选参数,默认值为hive
    —output or -o转换后SQL结果的存放目录。
    —config or -cSQL迁移工具的配置文件。
    or -d需要打印debug到控制界面时,设置值为true。

    提示:

    批处理模式使用示例:

    当指定file时,必须提供参数output。转换后的结果会保存在output目录下的html文件中,用户可以使用任意浏览器打开该html文件查看详细转化结果。

    执行模式

    可以使用命令直接执行查询,并在转换完成后退出工具。使用execute的示例:

    如果用户只指定了参数execute,则转换后的结果会打印到屏幕上。用户可自行指定output参数,将结果保存到目标文件中。

    用户还可以提供config参数来控制转换行为。config示例:

    文件名为“config.properties”,内容如下:

    以下Hive语句完全支持:

    以下Hive语句部分支持,即不支持某些关键字或属性:

    SQL描述openLooKeng语法参考
    CREATE DATABASE/SCHEMA不支持带“COMMENT”、“WITH DBPROPERTIES”的语句CREATE SCHEMA
    DROP DATABASE/SCHEMA不支持带“CASCADE”的语句
    SHOW DATABASE/SCHEMA不支持带“like”的语句SHOW SCHEMA
    CREATE TABLE不支持带“SKEWED BY”、“ROW FORMAT”的语句
    DROP TABLE不支持带“PURGE”的语句DROP TABLE
    ALTER TABLE只支持“重命名表”和“添加单列”
    SHOW CREATE TABLE对Hive而言,SHOW TABLE可用于表和视图。但在openLooKeng中,这只能应用于表。SHOW CREATE TABLE
    DESCRIBE支持带列名的语句
    CREATE VIEW不支持带“COMMENT”、“WITH DBPROPERTIES”的语句CREATE VIEW
    SHOW COLUMNS不支持带“like”的语句
    SHOW GRANT不支持指定用户或角色的语句SHOW GRANT
    INSERT不支持带“partition”的语句
    SELECT不支持带“cluster by”、“offset”的语句SELECT

    由于特性差异,如下Hive语句暂不支持:

    SQL
    ALTER DATABASE/SCHEMA
    DESCRIBE DATABASE/SCHEMA
    SHOW TABLE EXTENDED
    SHOW TBLPROPERTIES
    TRUNCATE TABLE
    MSCK REPAIR TABLE
    ALTER PARTITION
    ALTER COLUMN
    ALTER VIEW
    SHOW VIEWS
    CREATE MATERIALIZED VIEW
    DROP MATERIALIZED VIEW
    ALTER MATERIALIZED VIEW
    SHOW MATERIALIZED VIEWS
    CREATE FUNCTION
    DROP FUNCTION
    RELOAD FUNCTION
    CREATE INDEX
    DROP INDEX
    ALTER INDEX
    SHOW INDEX(ES)
    SHOW PARTITIONS
    Describe partition
    CREATE MACRO
    DROP MACRO
    SHOW ROLE GRANT
    SHOW PRINCIPALS
    SHOW LOCKS
    SHOW CONF
    SHOW TRANSACTIONS
    SHOW COMPACTIONS
    ABORT TRANSACTIONS
    LOAD
    UPDATE
    MERGE
    EXPORT
    IMPORT
    EXPLAIN
    SET
    RESET

    以下Impala语句完全支持:

    以下Impala语句部分支持,即不支持某些关键字或属性:

    SQLDescriptionopenLooKeng Syntax Reference
    DROP SCHEMA不支持带 “CASCADE”的语句
    CREATE TABLE不支持带 “ROW FORMAT”, “WITH SERDEPROPERTIES”, “CACHED IN” 的语句CREATE TABLE
    CREATE TABLE LIKE不支持带 “PARQUET” 的语句
    DROP TABLE不支持带 “PURGE” 的语句DROP TABLE
    CREATE VIEW不支持带 “IF NOT EXISTS”, “ALIAS” 的语句
    ALTER VIEW不支持别名. “ALTER VIEW” 会被转化为 “CREATE OR REPLACE VIEW”ALTER TABLE
    DESCRIBE仅仅支持DESCRIBE表, 其他都不支持
    GRANT ROLE不支持将角色赋予组(GROUP)GRANT ROLES
    GRANT仅支持”SELECT”,“INSERT” 权限, 且仅支持赋予给角色
    REVOKE ROLE不支持将角色从组(GROUP) 中收回REVOKE ROLES
    REVOKE仅支持”SELECT”,“INSERT” 权限, 且仅支持从角色收中收回
    INSERT INTO不支持带 “WITH”, “HINT”, “PARTITION” 的语句INSERT INTO
    DELETE不支持带 “JOIN” 的语句
    SHOW SCHEMAS不支持带多个通配符的语句DELETE
    SHOW TABLES不支持带多个通配符的语句
    ADD COMMENTS不支持给数据库和列添加评论COMMENT
    SET SESSION仅支持 “SET” 和 “SET ALL”
    ADD COLUMNS不支持在一条语句添加多列,也不支持设置kudu属性ALTER TABLE
    SHOW FUNCTIONS仅支持显示全部的函数或带“LIKE”的语句

    由于特性差异,如下Impala语句暂不支持:

    SQL
    ALTER SCHEMA
    CREATE KUDU TABLE
    REPLACE COLUMNS
    DROP SINGLE COLUMN
    ALTER TABLE OWNER
    ALTER KUDU TABLE
    TRUNCATE TABLE
    RENAME VIEW
    ALTER VIEW OWNER
    COMPUTE STATS
    DROP STATS
    CREATE FUNCTION
    REFRESH FUNCTION
    UPDATE TABLE
    UPSERT
    SHOW TABLE/COLUMN STATS
    SHOW PARTITIONS
    SHOW FILES
    SHOW ROLE GRANT
    DROP SINGLE COLUMN
    SHUTDOWN
    INVALIDATE META
    LOAD DATA
    REFRESH META
    REFRESH AUTH

    不支持对SQL语句中的UDF和函数进行转换。