无法使用名为订单的字段将 JSON 保存到数据库 (NiFi)

Unable to save JSON to database with field named as order (NiFi)

我有一个 JSON 文件:

[ {
  "Order" : "Nestle billboard 100%x250",
  "Country" : "Russia",
  "Order_ID" : 287259619,
  "Country_ID" : 243,
  "Order_lifetime_impressions" : "3385377",
  "Total_unique_visitors" : "1090850",
  "Total_reach_impressions" : "3385525",
  "Average_impressions_unique_visitor" : 3.1,
  "Date" : "2021-07-01"
}, {
  "Order" : "Nestle_june_july 2021_ mob 300x250",
  "Country" : "Russia",
  "Order_ID" : 28734,
  "Country_ID" : 263,
  "Order_lifetime_impressions" : "1997022",
  "Total_unique_visitors" : "1012116",
  "Total_reach_impressions" : "1997036",
  "Average_impressions_unique_visitor" : 1.97,
  "Date" : "2021-07-01"
}]

和table具有相同的列名。我正在使用具有此配置的 PutDatabaseRecord 处理器:

当我尝试保存此文件时,出现错误。

ERROR: syntax error (at or near: ",") Position: 110

我将 table 和 json 中的列重命名为 order_name 并且处理器能够保存它。

但如果可以的话,我还是想把它保存为order

我真的不明白为什么会这样。是的,order 是 sql 的关键字,但它在 " 中。这是一个错误吗?如何在不重命名列的情况下修复它?

如果我将 Order 保留为 JSON 中的列,但更改数据库中的列名 - 也可以正常工作。但是当然,我无法将 Order 保存到这个重命名的列中。

Order 是一个保留字,您应该尽可能避免将它用作列名。 [1] [3]

如果绝对不能,则需要在 PutDatabaseRecord 处理器配置中将 Quote Column Identifiers 属性 设置为 True。 [2]

  1. https://www.postgresql.org/docs/current/sql-keywords-appendix.html
  2. https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.13.2/org.apache.nifi.processors.standard.PutDatabaseRecord/
  3. Postgres table column name restrictions?