我已经通过 sequelize-cli 设置并运行了迁移策略,因此可以正确构建表。它可以使用sequelize db:migrate
并且可以很好地创建表格。并将sequelize db:migrate:undo
删除该表。
我还包含了插入几条记录的代码(根据此处的 SE 评论)。这也有效。这是所有这些的代码:
'use strict';
module.exports = {
up: function(queryInterface, DataTypes, done) {
return queryInterface.createTable('survey', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
state: {
type: DataTypes.TEXT
},
age: {
type: DataTypes.INTEGER
},
race: {
type: DataTypes.TEXT
},
gender: {
type: DataTypes.TEXT
},
education: {
type: DataTypes.TEXT
},
q1: {
type: DataTypes.INTEGER
},
q2: {
type: DataTypes.INTEGER
},
.
.
.
q24: {
type: DataTypes.INTEGER
},
q25: {
type: DataTypes.INTEGER
}
}).then(function() {
queryInterface.sequelize.query("INSERT INTO survey (state, age, race, gender, q1, q7, q24) VALUES ('Texas', 42, 'white', 'female', 5, 4, 3), ('Louisiana', 19, 'hispanic', 'male', 1, 2,5)");
done();
});
},
down: function(queryInterface, Sequelize) {
return queryInterface.dropTable('survey');
}
};
但我有一个包含 3000 多条记录的 CSV 文件,需要用作种子数据。它在db
文件夹中并称为survey.csv
. 我还有一个seeders
文件夹,我认为它是由sequelize init
或自动创建的sequelize migration:create
。它目前是空的。
我可以使用 Excel 中的 concatenate 函数来创建要插入的有序 n 元组数据,然后将这 3000 行粘贴到的 promise 部分up
,但这似乎很荒谬。
我找到了类似问题的回复,但在 Rails 中:
您需要 CSV 库。从文档:
arr_of_arrs = CSV.read("path/to/file.csv")
这将为您提供一个 2D 数组,您可以根据需要对其进行处理。
CSV
类似于IO.read
,但有一些额外的功能,例如标头解析。
看起来有少数(或更多) csv节点包,但天哪,它们太复杂了(就像简单命名的csv)。
有没有一种更简单的 csv 解析器(比如 Rails 的解析器)可以用来促进将 csv 转储到数据库中?或者另一种不需要从电子表格复制的大量多余代码的方法?