如何将对象数组插入 MariaDB 数据库
How to insert array of objects into MariaDB database
我的 MariaDB 中有非常简单的 table - 3 列:
- DT 为 PK
- 储蓄
- 每日公里数
我希望能够在 table 中一次插入大量对象。这是一段数据的样子:
[ { date: '2021-03-01T05:55:00.000Z', kpdValue: 0, savings: 0 },
{ date: '2021-03-01T06:00:00.000Z', kpdValue: 0, savings: 0 },
{ date: '2021-03-01T06:05:00.000Z', kpdValue: 0, savings: 0 },
{ date: '2021-03-01T06:10:00.000Z', kpdValue: 0, savings: 0 },
{ date: '2021-03-01T06:15:00.000Z', kpdValue: 0, savings: 0 },
......
]
我可以多次接收具有相同 PK 的数据,我的想法是当 table 中具有相同 PK 的新数据中有 PK - 替换它。
在示例屏幕截图中,我的 PK DT 值为 2021-02-11 15:45:00。我设法创建查询,检查它是否存在,如果存在则替换它,如果不存在则创建它:
INSERT INTO savingswest (DT,Saving,kpd)
VALUES ('2021-02-11 15:45:00','4.4','1.4')
ON DUPLICATE KEY UPDATE Saving='20.5',dt='2021-02-11 15:45:00',kpd='1.9';
如何使用我收到的数组执行此过程?
我正在使用 Node.js.
您可以使用Knex.js. Specifically the merge方法。
这是一个例子:
knex('tableName')
.insert([
{ dt: '2021-03-01T05:55:00.000Z', kpd: 0, savings: 0 },
{ dt: '2021-03-01T06:00:00.000Z', kpd: 0, savings: 0 },
{ dt: '2021-03-01T06:05:00.000Z', kpd: 0, savings: 0 },
{ dt: '2021-03-01T06:10:00.000Z', kpd: 0, savings: 0 },
{ dt: '2021-03-01T06:15:00.000Z', kpd: 0, savings: 0 },
])
.onConflict('dt')
.merge()
单个记录的输出:
insert into `tableName` (`dt`,`kpd`, `savings`) values ('2021-03-01T05:55:00.000Z', 0, 0) on duplicate key update `kpd` = values(`kpd`), `savings` = values(`savings`)
我的 MariaDB 中有非常简单的 table - 3 列:
- DT 为 PK
- 储蓄
- 每日公里数
我希望能够在 table 中一次插入大量对象。这是一段数据的样子:
[ { date: '2021-03-01T05:55:00.000Z', kpdValue: 0, savings: 0 },
{ date: '2021-03-01T06:00:00.000Z', kpdValue: 0, savings: 0 },
{ date: '2021-03-01T06:05:00.000Z', kpdValue: 0, savings: 0 },
{ date: '2021-03-01T06:10:00.000Z', kpdValue: 0, savings: 0 },
{ date: '2021-03-01T06:15:00.000Z', kpdValue: 0, savings: 0 },
......
]
我可以多次接收具有相同 PK 的数据,我的想法是当 table 中具有相同 PK 的新数据中有 PK - 替换它。
在示例屏幕截图中,我的 PK DT 值为 2021-02-11 15:45:00。我设法创建查询,检查它是否存在,如果存在则替换它,如果不存在则创建它:
INSERT INTO savingswest (DT,Saving,kpd)
VALUES ('2021-02-11 15:45:00','4.4','1.4')
ON DUPLICATE KEY UPDATE Saving='20.5',dt='2021-02-11 15:45:00',kpd='1.9';
如何使用我收到的数组执行此过程?
我正在使用 Node.js.
您可以使用Knex.js. Specifically the merge方法。
这是一个例子:
knex('tableName')
.insert([
{ dt: '2021-03-01T05:55:00.000Z', kpd: 0, savings: 0 },
{ dt: '2021-03-01T06:00:00.000Z', kpd: 0, savings: 0 },
{ dt: '2021-03-01T06:05:00.000Z', kpd: 0, savings: 0 },
{ dt: '2021-03-01T06:10:00.000Z', kpd: 0, savings: 0 },
{ dt: '2021-03-01T06:15:00.000Z', kpd: 0, savings: 0 },
])
.onConflict('dt')
.merge()
单个记录的输出:
insert into `tableName` (`dt`,`kpd`, `savings`) values ('2021-03-01T05:55:00.000Z', 0, 0) on duplicate key update `kpd` = values(`kpd`), `savings` = values(`savings`)