从Electron.io应用程序进行MySql备份的更好方法

时间:2016-11-24 11:41:50

标签: mysql node.js electron child-process

我想了解node mysql module如何理解其操作如何影响Electron.io Node应用的执行效果。

例如:我必须从 2m(百万)行的表格中备份到另一个数据库。首先,我尝试在Electron.io应用程序上使用node child_process。它适用于开发(# electrion main.js),但它不适用于asar package,因为它有自己的子进程限制。

以下是我必须做的事情:

准备输出数据库

DROP TABLE IF EXISTS MY_SECOND_DATABASE.BACKUP_TABLE;
CREATE TABLE MY_SECOND_DATABASE.BACKUP_TABLE (
    `NumberField` int(11) NOT NULL
);

从数据库源备份

mysql -h 127.0.0.1 -u root -proot MY_FIRST_DATABASE -e “SELECT NumberField FROM MY_TABLE” > /User/MacBook/Downloads/sql_output_content.txt

然后复制到另一个数据库

mysql -h 127.0.0.1 -u root -proot MY_SECOND_DATABASE -e "LOAD DATA LOCAL INFILE ‘/User/MacBook/Downloads/sql_output_content.txt’ INTO TABLE BACKUP_TABLE FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'"

怀疑已经出现

  • 如果我使用这个节点mysql插件来执行相同的操作,那将是一个更好的方法,因为它执行了我在生成的子进程上执行的相同任务?
  • 是否有其他方法可以更有效地完成此任务?

1 个答案:

答案 0 :(得分:1)

在您链接到的模块的自述文件的“简介”部分中,它解释了如何建立与数据库的连接:

您在这里使用两个数据库(在同一主机上但有两个数据库名称),因此您需要创建两个连接 - 第一个数据库和第二个数据库。

与第二个数据库的连接将用于删除表并创建一个新表,然后将使用与第一个数据库的连接来获取所有数据,并且将使用与第二个数据库的连接来保存所有数据。那个数据。

很难说没有测试哪种方式对你来说会更快但是如果你不能产生外部进程那么你就别无选择,只能从Node中使用数据库。