特定ID和日期范围的mysqldump

特定ID和日期范围的mysqldump,mysql,backup,Mysql,Backup,mysqldump-uroot-p——无创建信息——无创建db hawa_新scada_数据风电机组“从scada_数据中选择s.*作为s,风电机组作为w,其中s.local_tm介于'2018-02-01'和'2018-02-28'之间,s.turne=w.id和w.pooling_station=29”| gzip>/var/lib/mysql files/sd_feb.sql.gz 我从中得到了错误 找不到表:“从scada_数据中选择s.*作为s,风力涡轮机作为w,其中s.local_t

mysqldump-uroot-p——无创建信息——无创建db hawa_新scada_数据风电机组“从scada_数据中选择s.*作为s,风电机组作为w,其中s.local_tm介于'2018-02-01'和'2018-02-28'之间,s.turne=w.id和w.pooling_station=29”| gzip>/var/lib/mysql files/sd_feb.sql.gz

我从中得到了错误


找不到表:“从scada_数据中选择s.*作为s,风力涡轮机作为w,其中s.local_tm介于'2018-02-01'和'2018-02-28'之间,s.turbine=w.id和w.pooling_station=29”

根据您是希望转储INSERT语句,还是愿意将数据转储为CSV格式,以便在其他地方使用LOAD data INFILE,您可以采取两种方法。这两个版本都假设您想要使用gzip,并且可以访问命令行

mysqldump方法

您可以使用mysqldump--where子句来筛选与第二个表中的值匹配的记录,但需要对现有记录进行一些更改

更改--where子句以从零件中删除SELECT和,并在子SELECT中匹配风力涡轮机记录

添加一个开关以确保从数据库获得一致的转储(或者--lock all tables,或者--single transaction)

从表列表中删除表
wind_turbine
,因为它与--where子句不匹配,您只想将数据转储到
scada_数据中

像这样的方法应该会奏效:

mysqldump -uroot -p --single-transaction --no-create-info --no-create-db  --where "local_tm BETWEEN '2018-02-01' AND '2018-02-28' AND turbine IN (SELECT id FROM wind_turbine WHERE pooling_station = 29" hawa_new scada_data | gzip > /var/lib/mysql-files/sd_feb.sql.gz
选择输入输出文件方法

(这与您最初的查询相同,可能也是我自己的查询方式)

mysql -e "SELECT s.* INTO OUTFILE '/var/lib/mysql-files/sd_feb.sql' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
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