| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | import sqlite3import csvimport timeimport os# 记录开始时间start_time = time.time()# 连接数据库(动态获取数据库路径)db_path = os.path.abspath('../db.sqlite3')print(f"[{time.strftime('%H:%M:%S')}] 正在连接数据库: {db_path}")try:    conn = sqlite3.connect(db_path)    cursor = conn.cursor()    # 在插入前清空表    cursor.execute("DELETE FROM flowlist;")    print(f"[{time.strftime('%H:%M:%S')}] ✅ 数据库连接成功")    # 读取CSV文件    csv_file = 'flow.csv'    print(f"\n[{time.strftime('%H:%M:%S')}] 开始导入文件: {csv_file}")          with open(csv_file, 'r', encoding='utf-8') as f:        reader = csv.reader(f)                # 读取标题行        try:            header = next(reader)            num_columns = len(header)            print(f"[{time.strftime('%H:%M:%S')}] 检测到 {num_columns} 列 | 标题: {', '.join(header)}")        except StopIteration:            print("❌ 错误:CSV文件为空或格式不正确")            exit()        # 准备SQL语句        placeholders = ', '.join(['?'] * num_columns)        sql = f"INSERT INTO flowlist VALUES ({placeholders})"        print(f"[{time.strftime('%H:%M:%S')}] 生成SQL语句: {sql}\n")        # 插入数据        total_rows = 0        for i, row in enumerate(reader, 1):            # 关键修改:将空白值转换为0            processed_row = [                0 if str(cell).strip() == '' else cell  # 空白转0,保留非空值                for cell in row            ]            cursor.execute(sql, processed_row)            total_rows += 1                        # 每100行提示进度            if i % 10 == 0:                print(f"[{time.strftime('%H:%M:%S')}] 已插入 {i} 行...", end='\r')                # 提交事务        conn.commit()        print(f"\n[{time.strftime('%H:%M:%S')}] ✅ 数据插入完成,共 {total_rows} 行")except FileNotFoundError:    print(f"❌ 错误:CSV文件不存在,当前搜索路径: {os.path.abspath(csv_file)}")except sqlite3.Error as e:    print(f"❌ 数据库错误: {str(e)}")    conn.rollback()except Exception as e:    print(f"❌ 发生异常: {str(e)}")finally:    if 'conn' in locals():        conn.close()        print(f"[{time.strftime('%H:%M:%S')}] 数据库连接已关闭")# 计算总耗时end_time = time.time()print(f"\n总耗时: {end_time - start_time:.2f} 秒")
 |