How to change a string to a date during import using Sequel Pro?

守給你的承諾、 提交于 2020-01-02 04:43:06

问题


I'm trying to import a file into a MySQL table using Sequel Pro.

I know I need to use STR_TO_DATE, but I can't figure out the right syntax.

I'm getting a bunch of these errors for each row:

[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

Here is what I'm doing:

1 File > Import. The file comes up and the date field in the CSV is row 14:

2) Select Date > Add expression

3) In the Expression window, add this code:

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

4) Get this result:

5) Get error above. What is the right syntax?

It may be helpful to give you an idea of the table I'm importing into:

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;

In the error message, Amazon and USD are values for the fields that follow date (country and currency) in each row.

Thanks in advance!


回答1:


I figured it out.

It takes two things to get the UI to do the import.

1) In the expression window, this is the syntax to use:

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

So drop the SET date =part and only define the row inside the parens for STR_TO_DATE().

2) Also you have to clear the checkbox for Use last edited value.

It looks like this:

Once you click OK, the CSV import looks like this:

And then...

Yes!

I hope this helps someone.




回答2:


for anyone with this problem, I found a post that has another solution

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

this worked for me



来源:https://stackoverflow.com/questions/30018355/how-to-change-a-string-to-a-date-during-import-using-sequel-pro

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!