Search code examples
mysqlstringdatesequelpro

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


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!


Solution

  • 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.