2011-01-12 2 views
2

Имеет ли mysqldump (или некоторая другая команда) возможность сбросить ТОЛЬКО недавно обновленные строки? Я ничего не смог найти в документах об этом. спасибо.mysqldump последних записей

+0

Какое определение * последнее * в вашем случае? – alex

+0

Как вы определяете последнее? У вас есть столбец в вашей схеме, который является временем обновления? –

+0

У меня есть столбец времени в каждой из моих таблиц. «Недавнее» означает то, что я ему скажу ... т.е. «выберите * из таблицы WHERE timestamp>?» –

ответ

6

Вы можете предоставить mysqldump предложение where, используя параметр --where. Так что если у вас есть столбец под названием «модифицированный» в таблице, и вы хотите, чтобы все строки изменены в течение последних 2-х часов вы могли бы сделать что-то вроде этого:

mysqldump my_schema my_table --where="modified > now() - interval 2 hour" 
1

Используйте "в выходной файл" Синтаксис:

SELECT * FROM table INTO OUTFILE '/tmp/result.txt' 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
WHERE timestamp > ? 

Вы можете импортировать позже, если это необходимо с помощью:

LOAD DATA INFILE '/tmp/result.txt' INTO table 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 

Документация на сайте в MySQL:

http://dev.mysql.com/doc/refman/5.5/en/select.html

http://dev.mysql.com/doc/refman/5.5/en/load-data.html

0

От туздЫшпр: страница руководства

--where = 'where_condition ', -w' where_condition'

 Dump only rows selected by the given WHERE condition. Quotes around the condition are mandatory if it contains spaces or other characters that are special to your 
     command interpreter. 

     Examples: 

      --where="user=´jimf´" 
      -w"userid>1" 
      -w"userid<1" 
0

Определите представление для запроса, который вы хотите. Затем используйте mysqldump в представлении.

Смежные вопросы