使用 influxdb 包向 influxdb 数据库批量插入csv中的数据

1、安装相关的包

pip install influxdb==5.3.1
pip install pandas==1.1.3

2、具体代码
先准备一个csv的数据文件 命名为test.csv
脚本会将csv中的数据批量插入到influxdb数据库

import csv
from influxdb import InfluxDBClient
import os
import json
import time
import datetime

def main():
	# 连接influxdb数据库
    client = InfluxDBClient('127.0.0.1', 8086)
    # 创建一个数据库
    client.create_database('test')
    client.switch_database('test')
    csv_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'test.csv')
    json_body = []
    with open(csv_path, 'r') as f:
    	# 读第一行为字段列表容器
        headers = f.readline()
        for line in f.readlines():
        	# 构造要写入的dict
            fields = {headers.split(',')[i].strip(): line.split(',')[i].strip() for i in range(len(headers.split(',')))}
            # time.sleep(0.1)
            json_dic = {
                "measurement": "test_table",
                "tags":None,
                "time": datetime.datetime.utcnow(),
                "fields": fields
            }
            json_body.append(json_dic)
    client.write_points(json_body)
if __name__ == '__main__':
    main()
### 将雷达数据存储到数据库中的方案 #### 适用的数据库类型 对于雷达数据而言,考虑到其时间序列特性以及可能存在的大量记录,关系型数据库(如MySQL、PostgreSQL)和时序数据库(如InfluxDB, TimescaleDB)都是合适的选择。如果需要高效的查询性能和支持复杂的空间分析操作,则可以选择带有GIS扩展的关系型数据库,例如PostgreSQL搭配PostGIS插件[^1]。 #### 数据结构设计 为了有效地管理和利用雷达数据,在设计表结构时应考虑以下几个方面: - **基本信息表**:用于保存雷达设备的基础属性信息,比如ID、位置坐标等。 - **观测数据表**:此表用来记录每次扫描的结果,字段可含但不限于时间戳、反射强度值、距离目标的距离以及其他任何由特定应用定义的数据项。由于这些数值通常会随时间和角度变化而频繁更新,因此建议采用分区策略来优化读写速度并简化维护工作。 - **元数据表**(如有必要):当存在多个不同类型的传感器或者同一台仪器的不同模式下产生的差异较大的输出格式时,可以通过创建额外的一张或多张表格专门存放描述性的参数集合,以便于后续解析原始测量结果。 针对上述提到的空间划分概念,可以引入网格化技术辅助构建索引机制,从而加速基于地理位置范围内的检索过程。具体做法是在导入前先按照一定分辨率将地理区域切分成若干个小方格,并据此分配唯一标识符给每一个cell;之后再把实际采集点映射至对应的cell内部,最终形成关联关系存入相应字段之中。 #### 插入方法 假设选择了SQL Server作为后台支撑环境,那么下面给出一段Python脚本示范怎样批量加载来自CSV文件里的雷达样本集进入预设好的schema里: ```python import pandas as pd from sqlalchemy import create_engine engine = create_engine('mssql+pymssql://username:password@localhost/dbname') df = pd.read_csv('radar_data.csv') # 假定csv中有两列分别为timestamp 和 value df.to_sql(name='ObservationData', con=engine, if_exists='append', index=False) ``` 以上代码片段展示了通过Pandas库配合SqlAlchemy ORM框架完成自动化迁移流程的方式之一。当然也可以借助其他工具或编程语言实现相同目的,视个人偏好和技术栈情况而定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haeasringnar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值