Node.js MySQL动态创建表

时间:2019-02-21 09:12:42

标签: mysql sql node.js

我无法创建具有动态列数的表。

我有一个对象,我不完全知道键的数量

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
)"

这甚至可能吗?我找不到类似的东西。

如果有人可以帮我解决这个问题,我将非常高兴。

1 个答案:

答案 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");