我无法创建具有动态列数的表。
我有一个对象,我不完全知道键的数量:
var obj = {
data_1: 123,
data_2: 456,
data_3: 789,
(...)
};
此对象的每个键都应成为新表中的一列。 幸运的是,列数据类型始终为双精度。
我需要这样的东西:
"CREATE TABLE 'Data' (
FOREIGN KEY (id) REFERENCES other_table(id), // this is fixed
data_0 int, // this is fixed
Object.keys(obj) double
)"
这甚至可能吗?我找不到类似的东西。
如果有人可以帮我解决这个问题,我将非常高兴。
答案 0 :(得分:1)
实际上已在评论中解决。
但是为了完整起见,这里有更详细的说明:
如果所有要插入的对象都具有相同的键,我们可以从第一个键中选择键,然后使用该数据生成整个 CREATE TABLE 语句。
示例:
const data = require("path/to/some/data");
const sql = [
"CREATE TABLE new_table (",
"id int REFERENCES other_table (id),",
"data_0 int,",
Object.keys(data[0])
.map(k=>k+" int")
.join("\n")
,
")",
].join("\n");