insert_df

DataTablePostgreSQL.insert_df(dataframe, updatecol=None, chunksize=5000, auto_fit=True, conflict_target=None)

DataFrame 的数据插入当前数据表

入库前会对DataFrame的数据作以下处理:

  1. (强制)所有空值变更为 null,确保能正常入库

  2. (非强制)对于 不可为空 的字符串类型数据列,会填充 'null' 字符串(未来可能会修改,不要依赖这个逻辑)

  3. (非强制)对于decimal类型,自动 round 至规定小数位

上述 (非强制) 逻辑,可以通过指定 auto_fit=False 关闭。

参数
  • dataframe (DataFrame) – 待插入数据

  • updatecol (Optional[Iterable]) – 更新的列 (用于INSERT INTO ON CONFLICT)

  • chunksize (int) – 单次插库的数据行数

  • auto_fit (bool) – 是否自动进行数据调整

  • conflict_target (Optional[Iterable[str]]) – 使用INSERT INTO ON CONFLICT语法时的conflict基准列信息,如不提供,则试图使用主键列

提示

如果单次入库数据过多,导致超出数据库的单条sql语句的上限,可以降低 chuncksize,此方法将把一条较大的sql拆分成多条执行。

返回类型

Union[CustomSqlRespDTO, Dict, None]

返回

执行的操作记录