Try it without anything:
SELECT hour_stamp,
day_stamp,
month_stamp,
hour,
day,
month,
year,
quarter,
day_of_week,
week_of_year,
SUBSTR(hour_text,1,24),
SUBSTR(day_text,1,24)
FROM date_dim
INTO OUTFILE '/media/ssd0/temp/dates.tsv';
Here is a sample
mysql> desc veto.prova;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| provaemail | varchar(255) | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+
2 rows in set (0.05 sec)
mysql> select * from veto.prova;
+----+--------------------------+
| id | provaemail |
+----+--------------------------+
| 1 | redwards@logicworks.net |
| 2 | rolandoedwards@yahoo.com |
+----+--------------------------+
2 rows in set (0.00 sec)
mysql> select id,provaemail from prova into outfile 'C:/lwdba/prova.txt';
Query OK, 2 rows affected (0.01 sec)
mysql>
What does it look like on disk ???
C:\>cd lwdba
C:\LWDBA>type prova.txt
1 redwards@logicworks.net
2 rolandoedwards@yahoo.com
C:\LWDBA>
I tried something weird. I terminated with \0
mysql> select id,provaemail,substr(provaemail,1,5) from prova into outfile 'C:/lwdba/prova9.txt' fields terminated by '\0';
Query OK, 2 rows affected, 1 warning (0.00 sec)
mysql> show warnings;
+---------+------+------------------------------------------------------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+------------------------------------------------------------------------------------------------------------------------+
| Warning | 1475 | First character of the FIELDS TERMINATED string is ambiguous; please use non-optional and non-empty FIELDS ENCLOSED BY |
+---------+------+------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select id,provaemail,substr(provaemail,1,5) from prova into outfile 'C:/lwdba/prova8.txt' fields enclosed by '\0';
Query OK, 2 rows affected (0.00 sec)
mysql>
The files look like the this:
C:\LWDBA>type prova9.txt
1 redwards@logicworks.net redwa
2 rolandoedwards@yahoo.com rolan
C:\LWDBA>type prova8.txt
1 redwards@logicworks.net redwa
2 rolandoedwards@yahoo.com rolan
C:\LWDBA>
I used \0
because it is a null character.
The double quote anomaly you are seeing is probably due to the InfoBright Storage Engine and how it renders character output of function calls.
Here is weird suggestion, but I don't know if it will work...
If you make a subquery, data are always stored in a MySQL temp table. Alter the query:
mysql> select * from (select id,provaemail,substr(provaemail,1,5) as stuff from prova) A
-> A into outfile 'C:/lwdba/prova444.txt' fields terminated by '\0' enclosed by '\0';
Query OK, 2 rows affected (0.00 sec)
mysql>
In you case, that would be
SELECT * FROM (
SELECT hour_stamp,
day_stamp,
month_stamp,
hour,
day,
month,
year,
quarter,
day_of_week,
week_of_year,
SUBSTR(hour_text,1,24) ht,
SUBSTR(day_text,1,24) dt
FROM date_dim) A
INTO OUTFILE '/media/ssd0/temp/dates.tsv';
See if that does something different