mysql 提供兩種分段導出數據的方法:使用 limit 子句,指定每次查詢返回的記錄數量,通過遞增 offset 值分段導出。使用 mysqldump 工具,提供靈活的導出選項,包括按行數分段導出和在不同設備/平臺上導入。
MySQL 分段導出數據的方法
MySQL 導出數據時,通常需要導出整個表的內容。但在某些情況下,我們需要分段導出數據,例如:
導出數據量過大,導致導出過程長時間占用服務器資源
需要將數據分發到多個設備或平臺
MySQL 提供了兩種方法來分段導出數據:
方法一:使用 LIMIT 子句
LIMIT 子句可以指定每次查詢返回的記錄數量。可以使用它來分段導出數據:
SELECT * FROM table_name LIMIT 1000 OFFSET 0; SELECT * FROM table_name LIMIT 1000 OFFSET 1000; SELECT * FROM table_name LIMIT 1000 OFFSET 2000; ...
登錄后復制
OFFSET 子句指定從第幾個記錄開始查詢。通過遞增 OFFSET 的值,可以分段導出數據。
方法二:使用 mysqldump 工具
mysqldump 工具提供了更靈活的導出選項,包括分段導出。
mysqldump --opt --single-transaction --flush-logs --skip-tz-utc --column-statistics=0 --quick --order-by-primary --default-character-set=utf8mb4 -u username -p password database_name | split -l 1000000 --numeric-suffixes --additional-suffix=.sql
登錄后復制
–opt:優化導出性能
–single-transaction:在單個事務中導出數據,確保數據一致性
–flush-logs:在導出前刷新二進制日志
–skip-tz-utc:跳過時區轉換,避免數據不一致
–column-statistics=0:禁用列統計信息的收集,提高導出速度
–quick:快速導出,不導出表結構
–order-by-primary:按主鍵順序導出數據,有利于數據導入
–default-character-set=utf8mb4:設置默認字符集為 UTF-8
-u username -p password:指定 MySQL 用戶名和密碼
database_name:要導出的數據庫名稱
split -l 1000000 –numeric-suffixes –additional-suffix=.sql:將導出結果分割成 100 萬行一段,并添加數字后綴和 .sql 擴展名
使用 mysqldump 工具導出分段數據后,可以根據需要在不同的設備或平臺上導入數據。