我在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作为客户端。
答案 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
通常响应速度很快。
或者,您可以尝试Talend或plenty others。