【问题标题】:Create a dump file from a select从选择中创建转储文件
【发布时间】:2012-07-06 09:00:17
【问题描述】:

我想从 nodeJS 中的以下选择创建一个转储文件:

SELECT o1.* FROM objects_pool o1 inner join objects_pool o2 on o1.op_id = o2.op_id_object_corpse where o2.op_id_zone_pool = 41

我试过了:

执行('mysql -e "SELECT o1.* FROM objects_pool o1 inner join objects_pool o2 on o1.op_id = o2.op_id_object_corpse where o2.op_id_zone_pool = 41" -u root -pxxxxx dbNAME > FILE_PATH'

但我唯一得到的是结果列表。

【问题讨论】:

  • 您的意思是child_process.exec 与您的exec() 通话吗?
  • 是的,我只想提取几行并将它们放在另一台服务器上的另一个表中我想使用 mysqldump 但我不能将它与此选择查询一起使用

标签: mysql node.js


【解决方案1】:

您不能在child_process.exec 中使用管道或重定向。如果您想为child_process.exec 指定与标准输出不同的输出,则必须通过在选项中指定它来实现(另请参阅documentation):

var fileOut = fs.createWriteStream('FILE_PATH');
child_process.exec('mysql -e "SELECT o1.* FROM objects_pool o1 inner join objects_pool o2 on o1.op_id = o2.op_id_object_corpse where o2.op_id_zone_pool = 41" -u root -pxxxxx dbNAME', {stdio: [undefined, fileOut, undefined]}, function (err) {
  // called when done
  fileOut.end();
});

【讨论】:

  • 该文档实际上是我能够真正理解的极少数文档之一。 Nodejs 很棒。
  • 实际上我只需要从更复杂的查询中创建转储!你可以使用管道和重定向,我目前正在使用 mysqldump
  • 该代码会将命令的输出转储到文件中。但实际上,您可以使用来自child_process.exec() 的重定向和管道。老实说,我有点困惑。这些是 shell 功能,我不知道该节点会启动命令解释器来生成子进程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多