【问题标题】:Google Cloud MySQL Truncating Timestamps from CSV ImportGoogle Cloud MySQL 从 CSV 导入截断时间戳
【发布时间】:2018-07-01 17:26:40
【问题描述】:

来自如下所示的 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 Cloud 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 列时,数据显示正常:

+---------------------+
| 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 |
+---------------------+

这是唯一一个返回Timestamp 正常值的查询,但是数据也没有在应用程序视图中正确显示。我很困惑 - 这是我做错了什么,还是 Cloud SQL 出了什么问题?!

【问题讨论】:

  • 您是否查看过您的Punch_Type 数据以查看是否有任何嵌入的换行符?根据输出表,这就是它的样子。我不认为你的日期字段有问题(看起来像id,通常是最后一列,显示在日期的顶部,这就是为什么我猜那里有一个换行符)跨度>
  • @DavidMakogon 他们确实指定了每行 1 行,逗号分隔:cloud.google.com/sql/docs/mysql/import-export,并且其他格式相同的文件都很好 = /
  • 我不是在争论格式。我只是指出,它打印出来的方式,只是看起来像一个嵌入的换行符(字符 10,\n)。您是否尝试过同时查看 Punch_Typeid 字段?
  • 所有字段都有 /n 字符,尽管这只是这种情况下的一个问题。 Punch_Type 确实超出了 id - 将尝试去除 /n 字符并查看是否可以解决问题。
  • 问题似乎是 Punch_Type 中有一些尾随空格:+-----------------+ | Punch_Type | +-----------------+ |CLOCK IN LUNCH +-----------------+ 但是,使用 TRIM 函数似乎没有任何效果。

标签: mysql csv google-cloud-platform google-cloud-sql


【解决方案1】:

CSV 文件数据格式错误。

Cloud SQL 接受的 CSV 文件格式相当于使用 MySQL 语句“LOAD DATA INFILE ... CHARACTER SET 'utf8' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' .

【讨论】:

  • 为什么其他格式相同的文件也能正常工作?
  • 他们可能在其他列中有不同的数据。
  • ? 还是没明白。你能说得更具体点吗?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2015-07-26
    • 2013-10-14
    • 2011-07-03
    • 2017-03-24
    • 2016-01-29
    • 1970-01-01
    • 2018-08-13
    • 2020-01-31
    • 1970-01-01
    相关资源
    最近更新 更多