将JSON列解释为多列的拼花文件的红移副本
我正在将拼花地板文件从S3导入Redshift。该文件有3列。最后一列是包含多个列的JSON对象。使用以下代码:将JSON列解释为多列的拼花文件的红移副本,json,amazon-web-services,amazon-redshift,parquet,Json,Amazon Web Services,Amazon Redshift,Parquet,我正在将拼花地板文件从S3导入Redshift。该文件有3列。最后一列是包含多个列的JSON对象。使用以下代码: CREATE TABLE database_name.table_name ( text_field_1 VARCHAR(255) , text_field_2 VARCHAR(255), , json_field_1 VARCHAR(255)); 然后执行“复制”命令: copy parquet.raw_jamcityads_purchase fro
CREATE TABLE database_name.table_name (
text_field_1 VARCHAR(255)
, text_field_2 VARCHAR(255),
, json_field_1 VARCHAR(255));
然后执行“复制”命令:
copy parquet.raw_jamcityads_purchase from 's3://my-bucket/my-file.parquet'
iam_role 'arn:aws:iam::1###########2:role/R######S3'
parquet;
问题是COPY命令将拼花文件中的json\u field\u 1
解释为多列,并给出以下错误:
Query execution failed
Reason:
SQL Error [500310] [XX000]: [Amazon](500310) Invalid operation: S3 Query Exception (Fetch)
Details:
-----------------------------------------------
error: S3 Query Exception (Fetch)
code: 15001
context: Task failed due to an internal error. Unmatched number of columns between table and file. Table columns: 3, Data columns: 5, File name: ####
query: 4384070
location: dory_util.cpp:872
process: query1_56_4384070 [pid=18317]
-----------------------------------------------;
我不知道如何告诉Redshiftjson\u field\u 1
是拼花地板文件中的一个字段
我更喜欢使用COPY
命令来实现这一目标,而不是探索红移光谱/Athena/etc,因为这是我们加载客户数据的方式
我希望能够将JSON列作为字符串加载并处理它。我不需要里面的东西。现在,它阻止我完全加载拼花地板文件。这有帮助吗?这个问题解决了吗?Snathan escape不适用于拼花地板副本。这个问题似乎只与分区拼花S3文件有关。我想我发现了这个问题,分区数据的copy命令当前未使用文件夹路径中的分区列,并且由于该列本身不在数据中,因此导致缺少列的加载错误