【发布时间】:2017-05-23 14:51:51
【问题描述】:
是否可以使用 Knex.js 迁移修改数据库中的现有数据?
例如,如果我的数据库中有一个现有的列“名称”,并且我想将它分成两列“名字”和“姓氏”,是否可以通过迁移来做到这一点?
【问题讨论】:
标签: knex.js
是否可以使用 Knex.js 迁移修改数据库中的现有数据?
例如,如果我的数据库中有一个现有的列“名称”,并且我想将它分成两列“名字”和“姓氏”,是否可以通过迁移来做到这一点?
【问题讨论】:
标签: knex.js
是的
应该这样做:
exports.up = function (knex) {
return knex.schema.table('your_table', (table) => {
table.string('first_name');
table.string('last_name');
}).then(() => {
return knex('your_table').update({
// this requires that each name are in form 'fistname lastname'
// if you need to do more complex transformation regexp_split_to_array migth help
first_name: knex.raw(`split_part(??, ' ', 1)`, ['name']),
last_name: knex.raw(`split_part(??, ' ', 2)`, ['name'])
});
}).then(function () {
// drop original column, but I would suggest leaving it in
// to be able to verify values in new columns
});
};
exports.down = function () {};
【讨论】: