100 lines
3.5 KiB
Python
100 lines
3.5 KiB
Python
import datetime
|
|
import json
|
|
|
|
class InsertJson:
|
|
def __init__(self, tables = 10000, records_per_table = 10000, interlace_rows = 0, stt_trigger = 1) -> None:
|
|
self.tables = tables
|
|
self.records_per_table = records_per_table
|
|
self.interlace_rows = interlace_rows
|
|
self.stt_trigger = stt_trigger
|
|
|
|
def get_db_cfg(self) -> dict:
|
|
return {
|
|
"name": "test",
|
|
"drop": "true",
|
|
"replica": 1,
|
|
"precision": "ms",
|
|
"cachemodel": "'both'",
|
|
"keep": 3650,
|
|
"minRows": 100,
|
|
"maxRows": 4096,
|
|
"comp": 2,
|
|
"vgroups": 10,
|
|
"stt_trigger": self.stt_trigger
|
|
}
|
|
|
|
def get_stb_cfg(self) -> list:
|
|
return [
|
|
{
|
|
"name": "meters",
|
|
"child_table_exists": "no",
|
|
"childtable_count": self.tables,
|
|
"childtable_prefix": "d",
|
|
"escape_character": "yes",
|
|
"auto_create_table": "no",
|
|
"batch_create_tbl_num": 5,
|
|
"data_source": "rand",
|
|
"insert_mode": "taosc",
|
|
"non_stop_mode": "no",
|
|
"line_protocol": "line",
|
|
"insert_rows": self.records_per_table,
|
|
"childtable_limit": 10000,
|
|
"childtable_offset": 100,
|
|
"interlace_rows": self.interlace_rows,
|
|
"insert_interval": 0,
|
|
"partial_col_num": 0,
|
|
"disorder_ratio": 0,
|
|
"disorder_range": 1000,
|
|
"timestamp_step": 10,
|
|
"start_timestamp": "2022-10-01 00:00:00.000",
|
|
"sample_format": "csv",
|
|
"sample_file": "./sample.csv",
|
|
"use_sample_ts": "no",
|
|
"tags_file": "",
|
|
"columns": self.get_column_list(),
|
|
"tags": self.get_tag_list()
|
|
}
|
|
]
|
|
|
|
def get_column_list(self) -> list:
|
|
return [
|
|
{"type": "FLOAT", "name": "current", "count": 1, "max": 12, "min": 8},
|
|
{"type": "INT", "name": "voltage", "max": 225, "min": 215},
|
|
{"type": "FLOAT", "name": "phase", "max": 1, "min": 0},
|
|
]
|
|
|
|
def get_tag_list(self) -> list:
|
|
return [
|
|
{ "type": "TINYINT", "name": "groupid", "max": 10, "min": 1 },
|
|
{ "name": "location", "type": "BINARY", "len": 16, "values": ["San Francisco", "Los Angles", "San Diego", "San Jose", "Palo Alto", "Campbell", "Mountain View", "Sunnyvale", "Santa Clara", "Cupertino"]}
|
|
]
|
|
|
|
def get_insert_cfg(self) -> dict:
|
|
return {
|
|
"filetype": "insert",
|
|
"cfgdir": "/etc/taos",
|
|
"host": "127.0.0.1",
|
|
"port": 6030,
|
|
"user": "root",
|
|
"password": "taosdata",
|
|
"thread_count": 10,
|
|
"create_table_thread_count": 7,
|
|
"result_file": "/tmp/insert_res.txt",
|
|
"confirm_parameter_prompt": "no",
|
|
"insert_interval": 0,
|
|
"num_of_records_per_req": 1000,
|
|
"max_sql_len": 1024000,
|
|
"databases": [{
|
|
"dbinfo": self.get_db_cfg(),
|
|
"super_tables": self.get_stb_cfg()
|
|
}]
|
|
}
|
|
|
|
def create_insert_file(self) -> str:
|
|
date = datetime.datetime.now()
|
|
file_create_table = f"/tmp/insert_{date:%F-%H%M}.json"
|
|
|
|
with open(file_create_table, 'w') as f:
|
|
json.dump(self.get_insert_cfg(), f)
|
|
|
|
return file_create_table |