将CSV文件导入到MySQL表的单列中

时间:2018-10-24 15:38:14

标签: mysql sql csv time-series heidisql

我在Google上搜索了很多,但没有找到与我的问题相符的内容。

我有很多时间序列,其中包含不同的传感器读数。每个时间序列都存储在一个.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作为客户端。

1 个答案:

答案 0 :(得分: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