我尝试将嵌套 JSON 列表插入 Amazon Redshift,但遇到错误:
Invalid JSONPath format: Member is not an object.
这可能是由于错误地使用 JSONPaths 来访问嵌套对象。
这是我正在使用的 JSON:
{
"UserId": 78910,
"UserName": "johndoe123",
"AccountDetails": {
"AccountType": "Premium",
"CreatedDate": "2023-01-15T08:30:00"
},
"RecentActivities": [
{
"Activity": "Logged In",
"Timestamp": "2023-10-10T14:20:00+00:00"
},
{
"Activity": "Updated Profile",
"Timestamp": "2023-10-11T11:45:00+00:00"
},
{
"Activity": "Purchased Item",
"ItemId": 45678,
"Timestamp": "2023-10-12T09:00:00+00:00"
}
],
"Preferences": {
"Language": "en-US",
"NotificationsEnabled": true
}
}
我使用的 JSONPaths 是:
{
"jsonpaths": [
"$.UserId",
"$.UserName",
"$.AccountDetails.AccountType",
"$.AccountDetails.CreatedDate",
"$.RecentActivities[*].Activity",
"$.RecentActivities[*].Timestamp"
]
}
我的目标是实现下表输出:
| UserId | UserName | AccountType | CreatedDate | Activity | Timestamp |
|--------|------------|-------------|---------------------|------------------|-------------------------|
| 78910 | johndoe123 | Premium | 2023-01-15T08:30:00 | Logged In | 2023-10-10T14:20:00+00:00 |
| 78910 | johndoe123 | Premium | 2023-01-15T08:30:00 | Updated Profile | 2023-10-11T11:45:00+00:00 |
| 78910 | johndoe123 | Premium | 2023-01-15T08:30:00 | Purchased Item | 2023-10-12T09:00:00+00:00 |
不能对数组索引使用通配符。 Copy 是行映射的行,因此您可以将第 0 个条目放入表中,我希望您希望将数组展开为许多行。 为此,您需要导入数组,然后利用临时表取消嵌套。
有多种方法可以做到这一点,但我希望最简单的方法是将数组作为 SUPER 导入,然后取消数组的嵌套。 请参阅:https://docs.aws.amazon.com/redshift/latest/dg/query-super.html