mysql - 将csv文件导入MySQL表的单列
问题描述
我用谷歌搜索了很多,我没有找到任何符合我的问题的东西。
我有很多时间序列,包含不同的传感器读数。每个时间序列都存储在一个 .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;
reading_value
现在,我应该使用上述 .csv 文件中包含的值填充该字段。这种文件的一个例子:
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 作为客户端。
解决方案
您正在寻找的工具称为ETL(提取、转换、加载)。
您可以从 csv 文件(以及其他)中提取数据,通过添加传感器数据库表(以及其他)中的信息来转换它们,然后将其加载到 sensor_reading 数据库表中。
市场上有很多ETL。虽然,我应该是不可知论者,一个免费的、易于学习的并涵盖了您未来的所有需求,但您可以开始评估 PDI(Pentaho Data Integrator,绰号 Kettle)。去那里,下载最新的数据集成器,解压缩并按下spoon.bat/spoon.sh。一个很好的开始就在那里。而 StackOverFlow 标志Pentaho Data Integration
,通常会很快响应。
推荐阅读
- javascript - 将多个项目的背景颜色复制到剪贴板
- scheme - 用 CL 编写的这个别名代码的 Scheme 等效项是什么?
- java - Spring 配置 - Arraylist 的可选字段
- dart - Flutter:禁用应用程序的屏幕截图
- selenium-ide - 使用 Selenium IDE 记录画布上的点击坐标
- mysql - 加入每个组中的前 3 条记录,并合并为一行
- php - 旧会话没有被 Chroom 中的 session_destroy 销毁
- scrapy - Scrapy with Tor, Polipo in (Ubuntu) : 如何更新 IP
- javascript - last-of-type 应用于不存在的元素
- vba - 复制和粘贴范围时,在 VBA 中使用 with 语句错误地选择了打开的工作簿