R - dbWriteTable делает заглавные буквы в именах столбцов - PullRequest
1 голос
/ 15 января 2020

Я пытаюсь создать таблицу (в Snowflake db) с точно такими же именами столбцов, что и в объекте R data.frame:

    'data.frame':   1 obs. of  26 variables:
     $ Ship_To                 : chr "0002061948"
     $ Del_Coll_Indicator      : chr "D"
     $ Currency                : chr "GBP"
     $ Total_Volume            : num 0
     $ Total_Quantity          : num 0
    ...

Нет проблем с созданием таблицы:

dbWriteTable(con = my_db$con, name = "test5", value = df)

но все имена столбцов в базе данных преобразуются в верхние регистры:

'data.frame':   1 obs. of  26 variables:
 $ SHIP_TO                 : chr "0002061948"
 $ DEL_COLL_INDICATOR      : chr "D"
 $ CURRENCY                : chr "GBP"
...

Есть ли способ сохранить в таблице исходные имена из фрейма данных R?

1 Ответ

2 голосов
/ 15 января 2020

Как указано в SQL справочной документации Snowflake , когда идентификаторы (например, имена столбцов) не заключаются в кавычки при создании, Snowflake будет вводить их в верхнем регистре и рассматривать их как case- нечувствительны. Любые заключенные в кавычки идентификаторы будут сохранены как есть и обработаны как чувствительный к регистру идентификатор.

Измените имена столбцов фрейма данных (colnames(df)), чтобы использовать формат заключенного в кавычки формата идентификатора через dbQuoteIdentifier(my_db$con, each_column_name) Функция DBI . Это должно помочь сохранить корпус.

...