【问题标题】:Import data from csv file into ClickHouse database table with an incorrect input data format使用不正确的输入数据格式将数据从 csv 文件导入 ClickHouse 数据库表
【发布时间】:2020-03-13 10:48:49
【问题描述】:

我已经完成了连接 Clickhouse 服务器/客户端的任务并创建了 TABLE。然后我想将数据从 csv 导入到该表中。问题是 ClickHouse 中的 DateTime 类型需要这样的格式:YYYY-MM-DD hh:mm:ss,但我下载的数据集只有这种时间格式:2016-01-13 6:15:00 AM (YYYY-MM- DD h:mm:ss) 我的数据集中的小时只有 h,应该是 hh。 请告诉我如何将 csv 文件中的所有数据转换为正确的数据格式(可能是 Python 代码或其他)?请给我一个样品。

下面是我的数据库表:

CREATE TABLE ChicagoTaxi
(
    taxi_id Int32, 
    trip_start_timestamp DateTime, 
    trip_end_timestamp DateTime, 
    trip_seconds Int16,
    trip_miles Float32,
    pickup_community_area Int8,
    dropoff_community_area Int8,
    fare Nullable(Float32),
    tips Float32,
    tolls Nullable(Float32),
    extras Nullable(Float32),
    trip_total Nullable(Float32),
    payment_type Nullable(String),
    company Int16,
    pickup_latitude Int16,
    pickup_longitude Int16,
    dropoff_latitude Nullable(Float64),
    dropoff_longitude Nullable(Float64)
) ENGINE = Log

这是我正在使用的数据集。请告诉我是否还需要修改 Clickhouse 表中的数据类型。

这是 DateTime 格式的错误信息

【问题讨论】:

  • 您能否提供错误消息以及如何从文件中导入数据(是 clickhouse-client 还是 clikhouse-driver)?看看这个git issue
  • 我在上面添加了错误消息和用于导入 csv 数据的命令。请告诉我如何编写 Python 代码或任何语言将 csv 时间数据 h:mm:ss 转换为 hh:mm:ss 例如 6:04:07 转换为 06:04:07
  • 只是友好的建议 - 插入原始文本比插入截图更好..

标签: python database bigdata olap clickhouse


【解决方案1】:

只需将best_effort 作为参数传递

clickhouse-client --date_time_input_format=best_effort

【讨论】:

  • 我试过你的方法,但它不能解决我的问题。我编写了python代码并解决了它。但奇怪的事实是:当我在 windows 10 中转换数据格式并打开 csv 时,格式仍然是错误的。如果我转换并立即复制到 Linux 操作系统,我可以在 Linux 中正确看到时间格式。为什么?
  • 我对python不熟悉。无论如何,CH best_effort 能够解析日期时间格式2016-01-13 6:15:00 AM,它对我有用。
猜你喜欢
  • 2022-01-15
  • 2019-04-15
  • 2020-03-03
  • 1970-01-01
  • 2016-12-30
  • 2012-05-15
  • 2012-10-24
  • 2016-07-19
  • 1970-01-01
相关资源
最近更新 更多