0

MySQL データベースにインポートしようとしている Oracle データベース用に作成されたバッチ ファイルがあります。私は、この 2 つの間のあらゆる種類の矛盾に対処しなければなりませんでした。ファイルには、MySQL が期待する「1981-11-17」ではなく、すべての日付が「17-NOV-1981」として含まれています。

バッチ ファイルには、コマンドALTER SESSION set nls_date_format='DD-MON-YYYY'; がありました。日付形式を設定します。ファイルを大幅に編集しなくても、日付をそのまま受け入れるようにするには、MySQLに同等のものがありますか?

4

1 に答える 1

2

SQLを変更しなければそれが可能だとは思えません。

STR_TO_DATEを挿入ステートメントで使用して文字列を変換するか、 sedを介してファイルをパイプし、正規表現を使用して日付を見つけて修正することができます。たとえば、元のダンプの単一引用符で囲まれた日付を str_to_date の呼び出しに置き換えます、結果の変換された sql を mysql にパイプします...

cat oracledump.sql |  sed "s/'[0-9][0-9]-\(JAN\|FEB\|MAR\|APR\|MAY\|JUN\|JUL\|AUG\|SEP\|OCT\|NOV\|DEC\)-[1-2][0-9][0-9][0-9]'/str_to_date(&, '%d-%b-%Y')/g" | mysql newdb
于 2009-01-01T11:35:24.620 に答える