使用原始 Sequelize 查询的替换:避免单引号?

2024-02-21

这可能有一个非常简单的答案,但我没有看到它。

我想做一个原始查询 http://sequelizejs.com/docs/1.7.8/usage#raw-queries使用续集:

var sequelize = require('sequelize');
sequelize
   .query("LOAD DATA LOCAL INFILE :file
           INTO TABLE :table
           FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n';",
          null,
          {raw:true},
          {file: datasetPath, table: "dataset_" + datasetName})

问题是替换字符串包含单引号:file替换(这很好,因为它是一条路径)和:table替换(这很糟糕,因为它应该是一个未经修饰的表名,并且会破坏查询)。在表名替换的情况下如何避免这些引号?

Thanks.


如果你确定datasetName永远不会包含任何 SQL 注入的可能性,您可以直接将表名插入查询中,如下所示:

sequelize
   .query("LOAD DATA LOCAL INFILE :file
           INTO TABLE dataset_" + datasetName + "
           FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n';",
          null,
          {raw:true}, {file: datasetPath})

mwarren 发布的评论在这种情况下并没有真正起作用 - Sequelize 看到它是一个正在插入的字符串,并相应地对其进行转义。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用原始 Sequelize 查询的替换:避免单引号? 的相关文章

随机推荐