How to change a string to a date during import usi

2019-04-30 16:51发布

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:

enter image description here

2) Select Date > Add expression

enter image description here

3) In the Expression window, add this code:

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

enter image description here

4) Get this result:

enter image description here

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!

2条回答
我命由我不由天
2楼-- · 2019-04-30 17:25

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

查看更多
甜甜的少女心
3楼-- · 2019-04-30 17:26

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:

Global source values window

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

CSV ready to import

And then...

Success!

Yes!

I hope this helps someone.

查看更多
登录 后发表回答