我有一个为 Oracle 数据库创建的批处理文件,现在我正尝试将其导入到 MySQL 数据库。我不得不处理两者之间的各种不一致。该文件的所有日期均为“17-NOV-1981”,而不是 MySQL 预期的“1981-11-17”。
批处理文件包含命令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
关于mysql - 更改MySQL读取的日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/404875/