mysqldump用于特定ID和日期范围的导出

11 浏览
0 Comments

mysqldump用于特定ID和日期范围的导出

mysqldump -uroot -p --no-create-info --no-create-db hawa_new scada_data wind_turbine  "SELECT  s.* FROM scada_data as s,wind_turbine as w WHERE s.local_tm BETWEEN '2018-02-01' AND '2018-02-28' AND s.turbine = w.id AND w.pooling_station = 29" |gzip > /var/lib/mysql-files/sd_feb.sql.gz

在这个命令中,我遇到了错误:

无法找到表:"SELECT  s.* FROM scada_data as s,wind_turbine as w WHERE s.local_tm BETWEEN '2018-02-01' AND '2018-02-28' AND s.turbine = w.id AND w.pooling_station = 29"

0
0 Comments

问题:如何使用mysqldump来按照特定的ID和日期范围进行备份?

原因:用户想要根据特定的ID和日期范围对数据库进行备份,以便将数据导入到其他地方进行使用。

解决方法1:使用mysqldump命令行工具进行备份,生成INSERT语句的dump文件。

具体步骤如下:

1. 在命令行中使用mysqldump命令,并添加--where参数来指定筛选条件。

2. 将原始查询中的SELECT和FROM部分移除,并在子查询中使用wind_turbine表来匹配wind_turbine记录。

3. 添加适当的选项来确保从数据库中获得一致的备份,例如--lock-all-tables或--single-transaction。

4. 从表列表中移除wind_turbine表,因为它不会匹配--where条件,只想要备份scada_data表中的数据。

5. 使用gzip命令将备份文件进行压缩。

解决方法2:使用SELECT INTO OUTFILE语句进行备份,并将数据导出到CSV文件中。

具体步骤如下:

1. 在命令行中使用mysql命令,并使用SELECT INTO OUTFILE语句来将查询结果导出到文件。

2. 使用适当的选项来指定CSV文件的格式,例如字段分隔符和行分隔符。

3. 在原始查询中,通过使用JOIN将scada_data表和wind_turbine表连接起来,并添加适当的筛选条件。

4. 使用gzip命令将备份文件进行压缩。

使用上述两种方法之一,用户可以根据特定的ID和日期范围对MySQL数据库进行备份。

0