0

我有一个为 Oracle 数据库创建的批处理文件,我现在正尝试将其导入 MySQL 数据库。我不得不处理两者之间的各种不一致。该文件的所有日期都为“17-NOV-1981”,而不是 MySQL 预期的“1981-11-17”。

批处理文件具有命令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 回答