这可能有一个非常简单的答案,但我没有看到它。
我想做一个原始查询 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(使用前将#替换为@)