Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwenden von Ersetzungen mit einer rohen Sequelize-Abfrage:Vermeiden von einfachen Anführungszeichen?

Wenn Sie sicher sind, dass datasetName niemals die Möglichkeit von SQL-Injektionen enthalten wird, können Sie den Tabellennamen direkt in die Abfrage einfügen, etwa so:

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})

Der von mwarren gepostete Kommentar funktioniert in diesem Fall nicht wirklich - Sequelize sieht, dass es sich um einen String handelt, der eingefügt wird, und maskiert ihn entsprechend.