Google 云 MySQL 从 CSV 导入截断时间戳

Google Cloud MySQL Truncating Timestamps from CSV Import

来自如下所示的 CSV:

2018-01-18 13:23:48.878,KERRIE PAUSSA,CLOCK IN LUNCH
2018-01-18 16:57:46.466,ANDREW PEDERSON,CLOCK OUT PM
2018-01-18 17:29:57.731,AARON RICHARDS,CLOCK OUT PM
2018-01-18 17:30:11.903,DANIEL PURBRICK,CLOCK OUT PM

Google 云 SQL 正在渲染:

Timestamp           | Name       | Punch_Type       | id   |
+---------------------+------------+------------------+------+
| 2018-01-18 06:59:15 | FRED MOORE | CLOCK IN AM      | 3427 |
| 2018-01-18 12:00:43 | FRED MOORE | CLOCK OUT LUNCH  | 3433 |
| 2018-01-18 12:32:03 | FRED MOORE | CLOCK IN LUNCH   | 3437 |
    | 3484 | 17:38:28 | FRED MOORE | CLOCK OUT PM
     | 3490 |06:59:18 | FRED MOORE | CLOCK IN AM
 | 3498 |-22 12:23:04 | FRED MOORE | CLOCK OUT LUNCH
  | 3504 |22 12:54:40 | FRED MOORE | CLOCK IN LUNCH
+---------------------+------------+------------------+------+

但是,当只选择时间戳列时,数据显示正常:

+---------------------+
| Timestamp           |
+---------------------+
| 2018-01-18 06:59:15 |
| 2018-01-18 12:00:43 |
| 2018-01-18 12:32:03 |
| 2018-01-18 17:38:28 |
| 2018-01-22 06:59:18 |
| 2018-01-22 12:23:04 |
| 2018-01-22 12:54:40 |
+---------------------+

不过,这是 returns 正常值 Timestamp 的唯一查询,并且数据也未在应用程序视图中正确显示。我很困惑 - 这是我做错了什么,还是 Cloud SQL 有问题?!

CSV 文件数据格式错误。

The format of CSV files that Cloud SQL accepts is equivalent to using the MySQL statements "LOAD DATA INFILE ... CHARACTER SET 'utf8' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"'.

原来这是每行末尾的回车 return /r 字符。很烦人! TRIM 效果很好:

update Daily_clock_totals SET Punch_Type = TRIM(TRAILING '\r' FROM Punch_Type);