Mysqldump
在RDS上使用mysqldump導出TSV格式的大文件
我想定期從 RDS MySQL 伺服器將單個大表 (30GB) 導出到 TSV 文件中,以便我們可以將文件載入到 Vertica。
但是,RDS 沒有提供通過 –tab=path 選項使用 mysqldump 的方法,因此我們需要將 INSERT 語句解析/轉換為 TAB 分隔文件。
我想像這樣轉換轉儲文件中的行:
INSERT INTO MyTAble VALUES ('data_1','data_2', 'date_3');
到這個 ‘data_1’ ‘data_2’ ‘data_3’
由於我需要解析一個 30G 的文件,我想找到最有效的方法嗎?
謝謝你的幫助。
假設正在使用帶有 MySQL 5.6 的 RDS,mydumper可能是一個更好的選擇。較新的版本考慮了 RDS 授權限制,您將獲得 mydumper 優於 mysqldump 的所有優勢(壓縮、並行執行、整體更快的速度等)。
這不會提供 TSV 數據,但通過使用該
--chunk-filesize
選項,您可以將數據並行拆分為多個文件,然後並行處理它們option:: --chunk-filesize -F Split tables into chunks of this output file size. This value is in MB
但是,RDS 沒有提供通過 –tab=path 選項使用 mysqldump 的方法,因此我們需要將 INSERT 語句解析/轉換為 TAB 分隔文件
試試mysqltotsv pypi 模組:
pip3 install --user mysqltotsv python3 mysql-to-tsv.py --file dump.sql --outdir out1
這將在目錄中生成多個
.tsv
文件(在 MySQL 轉儲中找到的每個表對應一個文件)。out1``.tsv