在Glue作业中,使用包括character_set_server编码参数的jdbc url连接时对RDS不起作用

0

【以下的问题经过翻译处理】 我需要将从Redshift读取的表创建dynamicFrame插入到RDS中,并且该框架包括一个带有韩语字符串值的列。目标数据库的默认编码不是utf-8,因此在编写该框架时需要传递编码选项。我尝试了下面的代码,但是在MySQL中,发现韩语字母仍然无法正确显示。

为什么带有编码参数的jdbc url无法按照预想的那样工作?

代码

write_frame = glueContext.write_dynamic_frame.from_jdbc_conf(
    frame = source_frame,
    connection_options = {
        "url": "jdbc:mysql://<mysql host address>:<mysql port>/<db>?useUnicode=true&character_set_server=utf8mb4&character_set_client=utf8mb4&character_set_connection=utf8mb4&character_set_database=utf8mb4&character_set_results=utf8mb4&character_set_system=utf8mb4",
        "database": args["mysql_database"],
        "dbtable": target_table,
        "connectionName": args["mysql_connection_name"],
        "aws_iam_role": args["mysql_iam_role"]
    }
)

job.commit()

结果: 字符串显示为 ? 而不是正确的韩语字母。

profile picture
专家
已提问 5 个月前60 查看次数
1 回答
0

【以下的回答经过翻译处理】 这并不完全依赖于Glue,Glue提供的是MySQL JDBC驱动器8.0.23(实际上与Glue 3相同),传递到url中的任何内容都必须由驱动器支持: https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html#table-connector-j-connp-props-session

请注意,参数的名称与在数据库中设置属性时不完全相同。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则