5

我正在尝试使用 Sequel Pro 将文件导入 MySQL 表。

我知道我需要使用 STR_TO_DATE,但我想不出正确的语法。

每行我都收到一堆这些错误:

[ERROR in row 1] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET date = STR_TO_DATE(@'11/1/11', '%m/%d/%Y');,'Amazon','USD')' at line 2

这是我正在做的事情:

1 文件 > 导入。文件出现,CSV 中的日期字段为第 14 行:

在此处输入图像描述

2) 选择日期 > 添加表达式

在此处输入图像描述

3) 在表达式窗口中,添加以下代码:

$14, SET date = STR_TO_DATE(@$14, '%m/%d/%Y');

在此处输入图像描述

4)得到这个结果:

在此处输入图像描述

5)得到上面的错误。什么是正确的语法?

让您了解我要导入的表可能会有所帮助:

CREATE TABLE `Amazon_copy4` (
  `key` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `Title` varchar(255) DEFAULT NULL,
  `Author` varchar(255) DEFAULT NULL,
  `ASIN` varchar(255) DEFAULT NULL,
  `Units Sold` int(11) DEFAULT NULL,
  `Units Refunded` int(11) DEFAULT NULL,
  `Net Units Sold or KU/KOLL Units**[1]` int(11) DEFAULT NULL,
  `Royalty Type[2]` varchar(255) DEFAULT NULL,
  `Transaction Type*[3]` varchar(255) DEFAULT NULL,
  `Avg. List Price without VAT` decimal(19,2) DEFAULT NULL,
  `Average File Size` float(5,2) DEFAULT NULL,
  `Avg. Offer Price without VAT` varchar(255) DEFAULT NULL,
  `Average Delivery Cost` varchar(255) DEFAULT NULL,
  `Royalty` decimal(19,2) DEFAULT NULL,
  `date` date DEFAULT NULL,
  `country` varchar(255) DEFAULT NULL,
  `currency` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`key`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

在错误消息中,Amazon和是每行中USD日期 (country和) 后面的字段的值。currency

提前致谢!

4

3 回答 3

6

我想到了。

让 UI 进行导入需要做两件事。

1) 在表达式窗口中,这是要使用的语法:

STR_TO_DATE(@$14,'%m/%d/%Y') 

因此,删除该SET date =部分并仅定义 STR_TO_DATE() 括号内的行。

2)您还必须清除Use last modified value的复选框。

它看起来像这样:

全局源值窗口

单击“确定”后,CSV 导入将如下所示:

CSV 准备好导入

进而...

成功!

是的!

我希望这可以帮助别人。

于 2015-05-06T06:45:27.800 回答
0

对于任何有这个问题的人,我找到了一个有另一种解决方案的帖子

https://wpwhatnot.com/change-date-format-on-import-to-mysql-from-csv-file/

这对我有用

于 2018-04-09T21:13:51.497 回答
0

您需要不STR_TO_DATE($14,'%m/%d/%Y')输入@. (并且应该选中 SQL 复选框。)

如果您取消选中“上次编辑的值”复选框,则不会向该字段添加任何内容,因此不会引发错误。您要么需要保持选中状态,要么之后选择您的自定义表达式。

于 2020-02-23T17:51:42.520 回答