質問

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

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

役に立ちましたか?

解決

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top