首页 > 解决方案 > 什么是数据库大小的有效方法?

问题描述

我正在使用 python 将我的 .xlsx 数据转换为 DB,并且输出大小比我的预期要大。

我创建的数据库表是:

def create_file():
    
    cur.execute(
    """
    CREATE TABLE IF NOT EXISTS [file](
      [f_uid] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
      [f_name_key] VARCHAR(200), 
      [f_name_list] VARCHAR(1000),
      [path] VARCHAR(1000), 
      [run_start_dt] VARCHAR(200),
      [run_end_dt] VARCHAR(200),
      [protocol_file_name] VARCHAR(200),
      [sn] VARCHAR(200),
      [head_sn] VARCHAR(200),
      [version] VARCHAR(200)      
      );
    """)
    
def create well():

    cur.execute(
    """
    CREATE TABLE IF NOT EXISTS [well](
      [w_uid] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
      [w_no] VARCHAR(50),
      [sample_key] VARCHAR(100),
      [qa] TINYINT,
      [call] VARCHAR(50), 
      [v1] FLOAT,  
      [v2] FLOAT,
      [f_uid] INTEGER
      );
    """)
    

def create_value():

    cur.execute(
    """
    CREATE TABLE IF NOT EXISTS [value](
      [v_uid] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
      [w_uid] INTEGER,
      [channel] VARCHAR(50),
      [max_cycle] TINYINT,
      [end_v] FLOAT,
      [v_seq] TEXT NOT NULL
      );
    """)

第一次尝试,因为值表中的 v_seq 是字符串中的一长串浮点数,但输出约为 12GB

第二次尝试,将 v_seq 分成与列表中存在的浮点数一样多的 FLOAT 列,并将每个浮点值放入每一列,输出为 9GB

第三次尝试,回到第一次尝试,将 v_seq 更改为 BLOB 并 gzip 字符串中的一长串浮点数,输出约为 8.5GB

我想不出更多减少输出大小的方法。你能告诉我什么好主意吗?

标签: pythondatabasesqlite

解决方案


推荐阅读