Snowflake.connector SQL 编译错误 pandas 数据帧中的标识符无效

Kri*_*una 9 pandas snowflake-cloud-data-platform snowflake-connector

我正在尝试将从 json 响应创建的 df 摄取到现有表中(该表当前为空,因为我似乎无法让它工作)

df 类似于下表:

指数 clicks_affiliate
0 3214
1 2221

但我看到以下错误:

Snowflake.connector.errors.ProgrammingError:000904(42000):SQL编译错误:位置94处的错误行1无效标识符“clicks_affiliated”

雪花中的列名称与我的数据框中的列匹配。

这是我的代码:

import pandas as pd
from snowflake.sqlalchemy import URL
from sqlalchemy import create_engine
import snowflake.connector
from snowflake.connector.pandas_tools import write_pandas, pd_writer
from pandas import json_normalize
import requests

  
df_norm = json_normalize(json_response, 'reports')

#I've tried also adding the below line (and removing it) but I see the same error
df = df_norm.reset_index(drop=True)

   
def create_db_engine(db_name, schema_name):
    engine = URL(
        account="ab12345.us-west-2",
        user="my_user",
        password="my_pw",
        database="DB",
        schema="PUBLIC",
        warehouse="WH1",
        role="DEV"
    )
    return engine


def create_table(out_df, table_name, idx=False):
    url = create_db_engine(db_name="DB", schema_name="PUBLIC")
    engine = create_engine(url)
    connection = engine.connect()

    try:
        out_df.to_sql(
            table_name, connection, if_exists="append", index=idx, method=pd_writer
        )

    except ConnectionError:
        print("Unable to connect to database!")

    finally:
        connection.close()
        engine.dispose()

    return True

print(df.head)

create_table(df, "reporting")
Run Code Online (Sandbox Code Playgroud)

Kri*_*una 17

所以......事实证明我需要将数据框中的列更改为大写

我在创建数据框后添加了此内容,并且它有效:

df.columns = map(lambda x: str(x).upper(), df.columns)
Run Code Online (Sandbox Code Playgroud)

  • 是的——这就是我的意思。 (2认同)