Comment 0 for bug 1316042

Revision history for this message
Jericho Rivera (jericho-rivera) wrote :

MySQL's CSV engine does NOT interpret "", inside quotes properly. It requires sequence like \", to be there instead, without clear reason (I see nothing like this explained here, http://dev.mysql.com/doc/refman/5.6/en/csv-storage-engine.html).

How to repeat (taken from upstream bug description):

On any MySQL server version execute the following:

mysql> CREATE TABLE `emp` (
    -> `col1` text NOT NULL,
    -> `col2` text NOT NULL
    -> ) ENGINE=CSV DEFAULT CHARSET=utf8
    -> ;
Query OK, 0 rows affected (0.11 sec)

mysql> insert into emp values ("alan", "newyork"), ("jim", "CA\",boston");
Query OK, 2 rows affected (0.06 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> select * from emp;
+------+------------+
| col1 | col2 |
+------+------------+
| alan | newyork |
| jim | CA",boston |
+------+------------+
2 rows in set (0.00 sec)

mysql> flush tables;
Query OK, 0 rows affected (0.05 sec)

Now, check what is in emp.CSV file in the database directory. You'll see:

"alan","newyork"
"jim","CA\",boston"

I do not see this documented on Wiki as acceptable way of quoting. Now, change file to conform to "standard":

"alan","newyork"
"jim","CA"",boston"

Then check how it is interpreted/loaded:

mysql> flush tables;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from emp;
+------+---------+
| col1 | col2 |
+------+---------+
| alan | newyork |
| jim | CA" |
+------+---------+
2 rows in set (0.02 sec)

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.5.33 |
+-----------+
1 row in set (0.01 sec)