Копировать массив TEXT из Postgres в Snowflake

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

Некоторые значения в поле текстового массива в Postgres содержат одну строку объекта без двойных кавычек, как показано ниже (abc в этом примере вызывает ошибку):

{abc, "bc dcd", "de ef fg"}

Похоже, что это (abc) не проблема в Postgres, но Snowflake не принимает его как допустимое значение. Я использую коннектор Snowflake Python, и он жалуется на «ошибку синтаксического анализа JSON». Какое-нибудь обходное решение? Я предполагаю, что копирование его как текстового поля (не массива) в Snowflake, скорее всего, решит проблему, но мне интересно, есть ли какое-либо обходное решение в качестве типа массива.


person kee    schedule 04.11.2019    source источник
comment
Показанное значение не является допустимым массивом Postgres. Каков именно тип данных этого столбца? text[] или json?   -  person a_horse_with_no_name    schedule 04.11.2019
comment
Первое значение в массиве выглядит почти как символ, но символы не разрешены в JSON и Snowflake ARRAYs. Я не знаком с PostgreSQL, но он тоже не похож на действительный text[]. Может он как-то трансформировался в [abc, "bc dcd", "de ef fg"]? Преобразование в текст выглядит неплохим вариантом, но чего вы действительно хотите? ‹Br› Как это использовать?   -  person Hans Henrik Eriksen    schedule 05.11.2019
comment
текст [] - это точный тип   -  person kee    schedule 05.11.2019
comment
В представлении массивов по умолчанию в Postgres используются {...}, а не квадратные скобки. Но в любом случае: вы можете использовать to_jsonb(the_column), чтобы преобразовать это в действительный массив JSON   -  person a_horse_with_no_name    schedule 05.11.2019