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

批处理文件具有命令 ALTER SESSION set nls_date_format ='DD-MON-YYYY'; 以设置日期格式。在MySQL中是否有一个等价物来让它接受日期,而不必主要编辑文件?

有帮助吗?

解决方案

如果不修改SQL,我不相信这是可能的。

STR_TO_DATE 可以在insert语句中用于转换字符串,或者您可以尝试通过 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