feat: DB管线补全 + 新增orchestrator_db/program_schema/to_sql + 清理临时脚本
This commit is contained in:
@@ -236,3 +236,33 @@ def _unpack_record(data: bytes, fd_field_dicts: list[dict]) -> dict:
|
||||
record[field_dict['name']] = unpack_value(data[offset:offset + slen], field_dict)
|
||||
offset += slen
|
||||
return record
|
||||
|
||||
|
||||
def write_variable_file(file_path: str, fd_field_dicts: list[dict],
|
||||
records: list[dict]) -> int:
|
||||
"""写入 RECORDING MODE V 文件(带 4 字节 RDW 前缀)。
|
||||
|
||||
RDW: Little-Endian unsigned short 记录长度(含自身4字节)
|
||||
|
||||
Args:
|
||||
file_path: 输出路径
|
||||
fd_field_dicts: FD 字段定义列表
|
||||
records: 记录列表
|
||||
|
||||
Returns:
|
||||
int: 写入的记录数
|
||||
"""
|
||||
with open(file_path, 'wb') as f:
|
||||
for record in records:
|
||||
data = bytearray()
|
||||
for field_dict in fd_field_dicts:
|
||||
val = record.get(field_dict['name'], '')
|
||||
packed = pack_value(val, field_dict)
|
||||
data.extend(packed)
|
||||
record_len = len(data) + 4
|
||||
rdw = struct.pack('<H', record_len)
|
||||
f.write(rdw)
|
||||
f.write(b'\x00\x00')
|
||||
f.write(data)
|
||||
logger.info(f" wrote {len(records)} records to {file_path}")
|
||||
return len(records)
|
||||
|
||||
Reference in New Issue
Block a user