python - 雪花连接器错误: 001003 (42000): SQL compilation error (syntax error)

标签 python pandas snowflake-cloud-data-platform snowflake-connector

我正在尝试将 pandas 数据帧加载到 Snowflake 表中。

这是我的 SF 表 DDL:

create or replace TABLE MY_TABLE (
    WEBSITE VARCHAR(16777216),
    ORGANIZATION_NAME VARCHAR(16777216),
    ORGANIZATION_NAME_URL VARCHAR(16777216),
    IPO_STATUS VARCHAR(16777216),
    FOUNDED_DATE VARCHAR(16777216),
    FOUNDED_DATE_PRECISION VARCHAR(16777216),
    TOTAL_FUNDING_AMOUNT VARCHAR(16777216),
    TOTAL_FUNDING_AMOUNT_CURRENCY VARCHAR(16777216),
    TOTAL_FUNDING_AMOUNT_CURRENCY_USD VARCHAR(16777216),
    LAST_FUNDING_AMOUNT VARCHAR(16777216),
    LAST_FUNDING_AMOUNT_CURRENCY VARCHAR(16777216),
    LAST_FUNDING_AMOUNT_CURRENCY_USD VARCHAR(16777216),
    LAST_FUNDING_DATE VARCHAR(16777216),
    INDUSTRIES VARCHAR(16777216),
    INDUSTRY_GROUPS VARCHAR(16777216),
    LAST_FUNDING_TYPE VARCHAR(16777216),
    IT_SPEND VARCHAR(16777216),
    IT_SPEND_CURRENCY VARCHAR(16777216),
    IT_SPEND_CURRENCY_USD VARCHAR(16777216)
);

这是我的数据框的结构:

Data columns (total 19 columns):
 #   Column                                  Non-Null Count  Dtype  
---  ------                                  --------------  -----  
 0   Website                                 3924 non-null   object 
 1   Organization Name                       3924 non-null   object 
 2   Organization Name URL                   3924 non-null   object 
 3   IPO Status                              3924 non-null   object 
 4   Founded Date                            3837 non-null   object 
 5   Founded Date Precision                  3837 non-null   object 
 6   Total Funding Amount                    2397 non-null   float64
 7   Total Funding Amount Currency           2397 non-null   object 
 8   Total Funding Amount Currency (in USD)  2397 non-null   float64
 9   Last Funding Amount                     2259 non-null   float64
 10  Last Funding Amount Currency            2259 non-null   object 
 11  Last Funding Amount Currency (in USD)   2259 non-null   float64
 12  Last Funding Date                       2612 non-null   object 
 13  Industries                              3894 non-null   object 
 14  Industry Groups                         3894 non-null   object 
 15  Last Funding Type                       2612 non-null   object 
 16  Aberdeen - IT Spend                     1576 non-null   float64
 17  Aberdeen - IT Spend Currency            1627 non-null   object 
 18  Aberdeen - IT Spend Currency (in USD)   1576 non-null   float64

每雪花的 documentation ,我编写了以下代码来帮助我将数据帧写入数据库:

success, nchunks, nrows, _ = write_pandas(conn, 
                                          df, 
                                          "MY_DB.MY_SCHEMA.MY_TABLE", 
                                          quote_identifiers=False)

print(str(success) + ', ' + str(nchunks) + ', ' + str(nrows))

我遇到的问题如下:

ProgrammingError: 001003 (42000): SQL compilation error:
syntax error line 1 at position 133 unexpected 'Name'.

我已经使用此函数来摄取其他数据帧,并且过去没有出现任何问题(所以我知道我的连接/连接器正在工作) - 也许我的数据有问题或者我的设置方式有问题雪花表?我有一些 NaN 值..这会是一个问题吗?

以下是数据摘录:

enter image description here

我还查看了其他答案,例如 herehere但它们与我的问题没有直接关系。我对 Snowflake 和 SQL 比较陌生,因此我们将不胜感激任何解决此问题的帮助!

最佳答案

您的 df 列名称中有空格,您必须将 quote_identifiers 参数设置为 true :

success, nchunks, nrows, _ = write_pandas(conn, 
                                          df, 
                                          "MY_DB.MY_SCHEMA.MY_TABLE", 
                                          quote_identifiers=True)

虽然我不确定雪花是否能够将其映射到您的列,其中它们有下划线而不是空格

关于python - 雪花连接器错误: 001003 (42000): SQL compilation error (syntax error),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70067989/

相关文章:

python - 使用 pool.map() 时的全局字典 python

python - 是否可以在不在 URL 中使用语言代码的情况下拥有多语言 django CMS 站点?

python - Pandas:基于DataFrame中的其他列在DataFrame中创建新列

mongodb - 从 mongodb 文档创建矩阵

python - 配置代理详细信息以连接到 Snowflake

sql - Snowflake 使用 JSON (VARIANT) 字段创建 View 作为具有动态键的列

Python 模块未出现在 sys.modules 中

python - “method”对象不可下标

python - 根据另一列中的先前条件添加行

snowflake-cloud-data-platform - clusterring key 是否会影响雪花中的负载性能