【发布时间】:2018-12-02 10:07:07
【问题描述】:
我正在使用 AWS 的数据管道将 S3 上的 CSV 文件导入我的 MySQL RDS 实例,但似乎遇到了 STR_TO_DATE 问题。我得到一个:
“解析错误:预期字段将被 endOfRecord 或 endOfField 终止,但为 endOfFile”
使用这个语句:
insert into introtest (pk,id,deld) values (?,?, str_to_date(?, %m/%d/%Y));
我也试过这些:
insert into introtest (pk,id,deld) values (?,?, str_to_date('?', %m/%d/%Y));
insert into introtest (pk,id,deld) values (?,?, str_to_date(?, '%m/%d/%Y'));
insert into introtest (pk,id,deld) values (?,?, str_to_date('?', '%m/%d/%Y'));
都出现同样的错误
CSV 数据 =
0,740453,12/01/2010
提前致谢!
【问题讨论】:
-
我相信您需要引用您的日期格式字符串。并且您缺少其中一个的引号?在 str_to_date 函数中。
-
我在日期掩码和问号周围尝试了 4 个不同的单引号。你说的是双引号吗?或者有没有我没有尝试过的重复引用?
-
你是从 PHP 调用这个吗?另一种语言?显示您从中调用它的代码。例如,如果您使用 mysqli 参数化查询,那么
insert into introtest (pk,id,deld) values (?,?, str_to_date(?, '%m/%d/%Y'));行应该是正确的。如果它在 PHP 代码中用双引号括起来。 -
我不确定。我正在使用 AWS S3 到 MySQL RDS 管道模板。除了:docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/… 我在记事本中创建的虚拟文件有问题吗?我只是打开记事本输入 0,740453,12/01/2010 并将其保存为 .csv。将其上传到 S3 并运行管道。
-
一个可能的问题是 csv 文件中的日期应该是一个字符串。尝试编辑您的数据文件并在日期前后加上引号。我上面的问题是要求您澄清您在问题中显示的命令。它似乎缺少了什么。您在哪里告诉 AWS csv 文件的名称?你在哪里告诉它什么“?”代表?完整的代码是什么?
标签: mysql amazon-web-services amazon-s3 amazon-data-pipeline str-to-date