我想在第一次写入之前手动定义Redshift表。这是因为我想在定义的列上使用distkey
和sortkey
。 SQL查询将是这样的:
my_sql_command = """
create table if not exists my_db.my_schema.my_table(
my_id VARCHAR(MAX) NOT NULL DISTKEY,type VARCHAR(MAX),my_timestamp TIMESTAMP,)
compound sortkey(my_timestamp,my_id);
"""
我将这个SQL字符串称为preactions
参数(不幸提到了here,不幸的是找不到更好的文档),
my_frame = DynamicFrame.fromDF(my_df,glue_context,"my_frame")
glue_context.write_dynamic_frame.from_jdbc_conf(
frame=my_frame,catalog_connection=params['db_connection_name'],connection_options={"preactions": my_sql_command,"dbtable": "my_schema.my_table","database": "my_db"},redshift_tmp_dir="s3://my_bucket/",transformation_ctx="my_ctx")
但是我收到此错误消息:
py4j.protocol.Py4JJavaError: An error occurred while calling o227.pyWriteDynamicFrame.
: java.sql.SQLException: [JDBC Driver]String index out of range: 0
at java.lang.String.charAt(String.java:658)
我真的不知道该怎么解释。
是什么导致此异常?