Ошибка коннектора Snowflake: 001003 (42000): ошибка компиляции SQL (синтаксическая ошибка)

Я пытаюсь загрузить фреймворк pandas в таблицу Snowflake.

Вот мой DDL таблицы SF:

      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

Согласно документации Snowflake , я написал следующий код, который поможет мне записать фрейм данных в мою базу данных:

      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'.

Я использовал эту функцию для приема других фреймов данных, и в прошлом не было проблем (поэтому я знаю, что мое соединение / коннектор работает) - возможно, что-то не так с моими данными или с тем, как я настроил таблицу в Snowflake ? У меня есть несколько значений NaN... может ли это быть проблемой?

Вот выдержка из данных:

Я также проверил другие ответы SO, например, здесь и здесь, но они не имеют прямого отношения к моей проблеме. Я относительно новичок в Snowflake и SQL, поэтому будет очень признателен за любую помощь в решении этой проблемы!

1 ответ

у вас есть пробелы в именах столбцов df, вы должны установить quote_identifiersпараметр установлен в true :

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

хотя я не уверен, сможет ли снежинка сопоставить ее с вашими столбцами, где вместо пробела есть подчеркивание

Другие вопросы по тегам