ちょっと頭を悩ませて、簡単だと思ったことをやろうとしています。データベース内のあるテーブルから別のデータベース内のステージングテーブルにデータを取得するためのシェルスクリプト/MySQLオプションに移動しようとしています。基本的に、テーブルdb2.stage_customer_logを切り捨ててから、db1.customer_log->db2.stage_customer_logを切り捨てます。それぞれの成功が限られているいくつかのオプションを試しましたが、提案の準備ができています。
私が試した最初の考えは次のとおりです。
mysqldump -p dbname -u uname customer_log > stage_customer_log.csv --no-create-info
しかし、結果のファイルは元のテーブル名へのINSERTであったため、これは適切なオプションではないことが判明しました。だから私はそれを機能させるために少し操作をしなければならないでしょう。
次に、これを使用してシェルスクリプトを作成しました。
#!/bin/sh
mysql -h hostname -P 99999 -u uname -p --database dbname <<STOP
SELECT * FROM customer_log INTO OUTFILE 'stage_dm_customer_log.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';
\q
STOP
test $? = 0 && echo "Your batch job terminated gracefully"
これにより、希望する結果(コンマ区切りファイル)が得られましたが、ファイルはMySQLディレクトリに配置されました(絶対パスや「./」などを入力した場合でも)。アマゾンでホストされているImを見ると、アクセスエラーが発生するため、2番目の部分(インポート)は機能しません。
次に、オプションの詳細を読んだときに、最初のオプションに戻りました。私の最後のコマンドはこれでした:
mysqldump -p dbname -u uname customer_log --no-create-info --no-create-db --tab='/tmp/' --fields-optionally-enclosed-by='"' --fields-terminated-by=',' --fields-escaped-by='' --lines-terminated-by='\n' --verbose
しかし、再び操作しなければならないファイル名になってしまいました。
私はついにPentahoにテーブルを持ち込もうとしました、そしてそれが私たちのインスタンスであるかどうかはわかりませんが、そのような小さなレコードにはかなり長い時間がかかります(85,000で32分)。だから、私は詳細を必要としませんが、このようなものに行くための最良のルートは何ですか?他の人は何を実装しましたか?
ありがとう。