所以我整天都在try 处理这些JSON数据和Postgr,但不知道我做了什么导致了这个问题.

这就是我的数据集的样子,整个数据集大约有1000个对象:

{
    avgHighPrice: null,
    highPriceVolume: 0,
    avgLowPrice: 1633,
    lowPriceVolume: 1,
    id: '267'
  },
  {
    avgHighPrice: 3581,
    highPriceVolume: 1,
    avgLowPrice: 3501,
    lowPriceVolume: 290,
    id: '269'
  },
  {
    avgHighPrice: 800,
    highPriceVolume: 1,
    avgLowPrice: null,
    lowPriceVolume: 0,
    id: '272'
  }, ...

我正在try 将id,avgHighPrice,avgLowPrice添加到下面的Postgr表中

CREATE TABLE ticker_summary (
    id INT PRIMARY KEY references items,
    open_high INT,
    open_low INT,
    high_price INT,
    low_price INT,
    high_vol INT,
    low_vol INT,
    last_update INT
);

我在Node中使用以下代码执行此操作

await db.query("INSERT INTO ticker_summary (id, open_high, open_low) SELECT x.id, x.avgHighPrice, x.avgLowPrice FROM json_to_recordset($1) AS x (avgHighPrice INT, highPriceVolume INT, avgLowPrice INT, lowPriceVolume INT, id INT);", [JSON.stringify(array)]);

其中array是对象的array.

当我这样做的时候,代码成功执行,但它只插入了id值,其他所有内容都是空的,我假设这意味着它不匹配字段与定义的名称,但我不知道为什么.

有什么 idea 吗?

Postgr测试调试代码

INSERT INTO ticker_summary (id, open_high, open_low) 
SELECT x.id,
x.avgHighPrice,
x.avgLowPrice
FROM json_to_recordset('[{"avgHighPrice":153,"highPriceVolume":61308,"avgLowPrice":151,"lowPriceVolume":11252,"id":"2"},{"avgHighPrice":194920,"highPriceVolume":1,"avgLowPrice":182001,"lowPriceVolume":1,"id":"6"},{"avgHighPrice":187121,"highPriceVolume":4,"avgLowPrice":178642,"lowPriceVolume":2,"id":"10"}]') 
AS x (avgHighPrice INT, highPriceVolume INT, avgLowPrice INT, lowPriceVolume INT, id INT);

我需要从数组中的每个对象中提取3个值,但到Postgr中自己的行中.

推荐答案

为提取的列添加双引号是有效的.

参见hereWhx

SELECT x."id",
x."avgHighPrice",
x."avgLowPrice"
FROM json_to_recordset('[{"avgHighPrice":153,"highPriceVolume":61308,"avgLowPrice":151,"lowPriceVolume":11252,"id":"2"}
  ,{"avgHighPrice":194920,"highPriceVolume":1,"avgLowPrice":182001,"lowPriceVolume":1,"id":"6"}
  ,{"avgHighPrice":187121,"highPriceVolume":4,"avgLowPrice":178642,"lowPriceVolume":2,"id":"10"}]') 
AS x ("avgHighPrice" INT, "highPriceVolume" INT, "avgLowPrice" INT, "lowPriceVolume" INT, "id" INT);
id avgHighPrice avgLowPrice
2 153 151
6 194920 182001
10 187121 178642
SELECT 3

fiddle

Javascript相关问答推荐

使用json文件字符串来enum显示类型字符串无法按照计算的enum成员值的要求分配给类型号

是什么原因导致此Angular 16电影应用程序中因类型错误而不存在属性?

React:未调用useState变量在调试器的事件处理程序中不可用

微软Edge Select 间隙鼠标退出问题

我开始使用/url?q=使用Cheerio

MongoDB中的引用

为什么ngModel不能在最后一个版本的Angular 17上工作?'

在open shadow—root中匹配时,使用jQuery删除一个封闭的div类

从Nextjs中的 Select 项收集值,但当单击以处理时,未发生任何情况

类构造函数忽略Reaction Native中的可选字段,但在浏览器中按预期工作

AJAX POST在控制器中返回空(ASP.NET MVC)

在验证和提交表单后使用useNavigate()进行react 重定向,使用带有加载器和操作的路由

不同表的条件API端点Reaction-redux

无法设置RazorPay订阅API项目价格

在JavaScript中将Base64转换为JSON

Chart.js Hover线条在鼠标离开时不会消失

Plotly.js栏为x轴栏添加辅助文本

如何将值从后端传递到前端

CSS网格使页面自动滚动

鼠标进入,每秒将图像大小减小5%