我試圖做到這一點:MySQL的出口TSV到STDOUT,而不是一個文件
mysql -u root old_db -e "SELECT some_fields FROM huge_table INTO OUTFILE ..." \
| cat header.sql - trailer.sql \
| psql new_db
其中header.sql包含:
COPY huge_table (some_fields) FROM stdin;
而且trailer.sql只包含\.
到終止流。
我不能爲我的生活弄清楚如何讓MySQL將標籤分隔值轉儲到STDOUT中,以便這個管道可以工作。我試過將/ dev/stdout指定爲路徑,但它聲稱沒有權限。
我試圖做到這一點,儘可能快地從MySQL獲取數據到PostgreSQL。寫入磁盤並回到PostgreSQL的時間太慢了。
我注意到,如果你將查詢變成 MySQL,它幾乎會輸出一個TSV,但不完全。
有沒有辦法做到這一點,還是我鞭打死馬?
嗯,我真的希望這個工作,但不幸的是MySQL只是抱怨文件已經存在(它堅持創建一個新文件)。我認爲這不容易解決。該死的你MySQL:P – d11wtq
@ d11wtq該死的......我沒想過去檢查一下。 「INTO OUTFILE」沒有「OVERWRITE」或「APPEND」標誌?或者,您可以讓'INTO'寫入'stdout',然後使用shell將輸出輸出到'psql'中? –
你並不孤單,這個問題。 http://stackoverflow.com/q/5016010/398670 –