Mysqldump

在RDS上使用mysqldump導出TSV格式的大文件

  • December 29, 2020

我想定期從 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

引用自:https://dba.stackexchange.com/questions/71315