Mysqldump
帶有 LIMIT 和 –order-by-primary 的 mysqldump
我想使用 mysqldump 從數據庫中檢索 X 第一行(其中“第一”按主鍵排序)。
我正在嘗試通過以下方式使用 mysqldump:
mysqldump [connection-info] -where"1=1 LIMIT 40" --order-by-primary database table >> file.sql
(這是在為不同表執行不同配置的腳本中)
現在,問題是,該命令會創建以下查詢:
SELECT /*!40001 SQL_NO_CACHE */ * FROM
桌子WHERE 1=1 LIMIT 40 ORDER BY primary_key
是一個無效的查詢,我需要
LIMIT 40
放在ORDER BY
語句之後。
我的猜測是你不能結合使用限制
--order-by-primary
解決此問題的一種方法是在
-where
參數中定義順序。如果您知道表的主鍵:mysqldump -u lelle -p -w"1 = 1 order by <primary key> LIMIT 40" <database> <table>
請注意,這
<primary key>
是主鍵中列的佔位符。如果您事先不知道主鍵,您可以使用 INFORMATION_SCHEMA 來確定:
select GROUP_CONCAT(column_name SEPARATOR ',') from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where CONSTRAINT_NAME = 'PRIMARY' and CONSTRAINT_SCHEMA = ... and table_name = ...;
然後使用mysqldump中的資訊。