-1

我想将数据框存储到现有的 MSSQL 表中。Dataframe 有 3 列,但 SQL 表只有 2 列。

如何将具有相同名称的 2 列存储到 SQL 中?

我尝试了以下代码:

df.to_sql(sTable, engine, if_exists='append')

如果列的数量和名称完全相同,它就可以工作。但我想让我的代码更通用。

4

2 回答 2

0

这是一个很好的解决方案。现在,我还能够将标题名称转换为 SQL 字段名称。我必须解决的唯一主题是 idex。DataFrames 确实有一个索引(从 0...n)。我不需要数据库中的字段。但是,我没有找到通过上传到 SQL DB 来跳过 idex 列的方法。有人有想法吗?

于 2018-03-29T12:43:03.533 回答
0

首先创建一个具有正确模式的数据框:

sql_df = df[['colA', 'colB']]
sql_df.to_sql(sTable, engine, if_exists='append')

Pandas 应该非常节省内存,这意味着这些列实际上不会被复制,它们只会被sql_df. 您甚至可以重命名列来完成这项工作。

完成此操作的超级通用方法可能如下所示:

def save_to_sql(df, col_map, table, engine):
    sql_df = pd.DataFrame()
    for old_name, new_name in col_map:
        sql_df[new_name] = df[old_name]
    sql_df.to_sql(table, engine, if_exists='append')

它采用数据框和一个列表,该列表将要使用的列与应该调用的列配对,以使它们与 SQL 表对齐。例如,save_to_sql(my_df, [('colA', 'column_a'), ('colB', 'column_b')], 'table_name', sql_engine)

于 2018-03-28T20:45:09.957 回答