首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS和MySQL:用关联导入CSV数据

NodeJS和MySQL:用关联导入CSV数据
EN

Stack Overflow用户
提问于 2020-07-31 17:29:04
回答 1查看 336关注 0票数 3

我搜索了网络,我找到了this,这可能与我的问题有关,但我不明白,我是来问这个的。

我试图把数据插入到表格中。我正在使用sequelize v6mysql

我在数据库中拥有的

我有两张桌子,学生和乡镇。

学生表:id, name, email, township_id

乡镇表:id, name

我在我的联想中所拥有的

学生模型

代码语言:javascript
复制
Student.belongsTo(models.Township, {
    foreignKey: "townshipId",
    as: "township",
});

乡镇模式

代码语言:javascript
复制
Township.hasMany(models.Student, {
    foreignKey: "townshipId",
    as: "township",
});

我在req里有什么

在我的req中,我有如下数据:

代码语言:javascript
复制
{
    name: 'john',
    email: 'john@gmail.com',
    township: 'Flank',
}

问题

实际上,我正试图将csv数据批量插入到我的数据库中。最终用户将使用上述数据(在req中)将数据填充到excel中,并将其保存为csv文件并将其导入系统。问题在于我解析csv时得到的值是乡名为text value,在本例中是Flank。但我确实需要将其更改为integer township_id,以便可以使用该township_id插入students表。

(我所做的是:获取乡镇名称(在本例中为Flank )并运行QuerySELECT township_id FROM townships WHERE name = 'Flank',如果乡镇表中有Flank,则获取township_id。因此,我现在可以使用这个township_id插入students表。但我认为这是非常昂贵的,另一个事实是,我还有50个这样的领域。)

因此,我的问题是,如何将该township: 'Flank'插入到students表中,而不首先显式地找到township_id (避免我所做的事情)。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-12-08 12:50:35

问题在于解析csv得到的值是乡镇名称作为文本值,在本例中是Flank。但我确实需要将其更改为整数township_id,以便可以使用该township_id插入到students表中。

为了这个,而不是

代码语言:javascript
复制
INSERT INTO students (name   , township, ...)
    VALUES           ('John' , 'Flank' , ...)

你必须用

代码语言:javascript
复制
INSERT INTO students (name   , township_id, ...)
    SELECT            'John' , township_id, ...
    FROM towns
    WHERE town_name = 'Flank';

PS。我不知道如何在脚本/框架语法中执行INSERT .. SELECT

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63196469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档