2011-03-22 37 views
5

我使用以下命令從每個數據庫的每列中轉儲100行。問題是,它返回了第一個 100個記錄,我寧願有上一個。我發現一個標誌讓我通過主鍵( - order-by-primary)進行排序,但仍然返回錯誤的行。我會嘗試將'order by'隱藏到下面的哪個標記中,但每個表的主鍵是不同的。從mysqldump中檢索N個最後一行

mysqldump -u username -p --where="true limit 100" --all-databases > dump.sql 

有沒有辦法抓住最後100條記錄或許指的是PK,而不是PK的列名的方式之前,顛倒順序?

+2

不是。但是您可以在字段中排序:按1,2,3,4,5排序。如果你的PK總是由第一個(x)字段組成,那麼這個工作。如果你的PK是'1,3,5',那就不會:) – Konerak 2011-03-22 16:59:32

+0

還有興趣嗎?我有一個linux版本的回覆和限制,這很容易。如果主鍵不是所有表的第一列,那將很有用。我嘗試使用命令行選項爲這些東西做一個真正的補丁,但還不確定如何發佈它,因爲它需要一些mysql-client-libs。 – flaschenpost 2013-05-05 15:17:49

+0

我嘗試將它發佈爲MySQL Feature Request 69163,我們將會看到。 – flaschenpost 2013-05-07 16:22:04

回答

-1

可能是這樣的:SELECT * FROM表名ORDER BY DESC LIMIT 100

+0

這是一個扁平的語法錯誤。 'desc'是一個保留字,無論如何你都不能有空白的order by子句。 – 2013-05-03 20:05:14

0

我覺得只要你不想打補丁mysqldump的源代碼存在只是一種變通方法。

嘗試創建一個輔助數據庫架構(scheme_dump),使一個腳本,遍歷所有表,觸發

create table scheme_dump.<tabname> like <tabname>; 
insert into scheme_dump.<tabname> select * from <tabname> order by <colname> desc limit 100; 

,然後傾倒scheme_dump方案。

不好。

但修復一次性源代碼應該不那麼困難。