【问题标题】:Importing csv file into single column of a MySQL table将csv文件导入MySQL表的单列
【发布时间】:2019-03-29 02:30:01
【问题描述】:

我用谷歌搜索了很多,但我没有找到任何符合我的问题的东西。

我有很多时间序列,包含不同的传感器读数。每个时间序列都存储在一个 .csv 文件中,因此每个文件都包含一列。

我必须填充这个 MySQL 表:

CREATE TABLE scheme.sensor_readings (
    id int unsigned not null auto_increment,
    sensor_id int unsigned not null,
    date_created datetime,
    reading_value double,
    PRIMARY KEY(id),
    FOREIGN KEY (sensor_id) REFERENCES scheme.sensors (id) ON DELETE CASCADE
) ENGINE = InnoDB;

sensors 表是:

CREATE TABLE scheme.sensors ( 
    id int unsigned not null auto_increment,
    sensor_title varchar(255) not null,
    description varchar(255) not null,
    date_created datetime,
    PRIMARY KEY(id)
) ENGINE = InnoDB;

现在,我应该用上述 .csv 文件中包含的值填充 reading_value 字段。此类文件的示例:

START INFO  
Recording Time  *timestamp*
Oil Pressure    dt: 1,000000 sec
STOP INFO   
0,445328    
0,429459    
0,4245  
0,445099    
0,432434    
0,433426    
...
EOF

我需要设计一个 SQL 查询,在其中填充此表,同时从 .csv 文件中读取值。 我不知道如何继续:我应该使用某种临时表作为缓冲区吗?

我使用 HeidiSQL 作为客户端。

【问题讨论】:

    标签: mysql sql csv time-series heidisql


    【解决方案1】:

    您要查找的工具称为ETL(提取、转换、加载)。

    您可以从 csv 文件(以及其他)中提取数据,通过添加传感器 db-table(以及其他)中的信息来转换它们,然后将其加载到 sensor_reading db-table 中。

    市场上有大量的 ETL。虽然,我应该是不可知论者,一个免费的、易于学习的并涵盖了您未来的所有需求,但您可以开始评估 PDI(Pentaho Data Integrator,绰号 Kettle)。前往there,下载最新的Data Integrator,解压并按下spoon.bat/spoon.sh。一个不错的开始是there。而 StackOverFlow 标志 Pentaho Data Integration,通常会很快响应。

    您也可以试试Talendplenty others

    【讨论】:

    • 感谢您的回复。我将尝试 PDI,而 Talend 显然不支持 MySQL 8.0。
    • 感谢您的信息,我不知道。如果您需要入门支持,请告诉我们。
    • 我现在正在考虑 NoSQL 解决方案,尤其是 Cassandra:面向列的数据库是否需要 ETL 工具来解决相同的问题?
    • 虽然可能有其他方法,但 ETL 确实可以解决这个问题,而且 PDI 为 Cassandra 内置了一个特殊的步骤。
    猜你喜欢
    • 2016-06-05
    • 2013-05-03
    • 1970-01-01
    • 2018-01-05
    • 2013-05-06
    • 2011-04-07
    • 2012-06-20
    • 2012-05-15
    • 1970-01-01
    相关资源
    最近更新 更多