【问题标题】:How to change a string to a date during import using Sequel Pro?如何在使用 Sequel Pro 导入期间将字符串更改为日期?
【发布时间】:2015-07-13 03:26:58
【问题描述】:

我正在尝试使用 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;

在错误消息中,AmazonUSD 是每行中日期后面的字段(countrycurrency)的值。

提前致谢!

【问题讨论】:

    标签: mysql string date sequelpro


    【解决方案1】:

    我想通了。

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

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

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

    所以删除 SET date =part 并只定义括号内的行 STR_TO_DATE()。

    2) 您还必须清除 使用上次编辑的值 的复选框。

    看起来像这样:

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

    然后……

    是的!

    我希望这对某人有所帮助。

    【讨论】:

    • 谢谢!但是你有没有想过如何为你不断截断并重新上传的表执行此操作?当我这样做时,它可以工作——但是当我截断数据并更新表时,我的日期会直接返回到 varchar。当我尝试重新上传时,甚至不保存表达式。
    【解决方案2】:

    对于遇到此问题的任何人,我发现了一个有另一种解决方案的帖子

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

    这对我有用

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 2017-06-07
        • 2021-11-18
        相关资源
        最近更新 更多