41

Re: Кодування файлу

koala написав:

В csv є кілька діалектів для розв'язання проблеми з керівними символами (кома, лапки, новий рядок) всередині значень.

також - в багатьох модулях трапляється передбачена можливість ввести СВОЇ власні керівні символи

з власної практики - також, корисним буває правило "лапкувати" ВСІ значення при записі , незалежно від того число це чи стрінг чи значення порожнє

42

Re: Кодування файлу

А в SnowFlake є внутрішній механізм експорту в CSV. Може, варто ним скористатися?

Подякували: leofun011

43 Востаннє редагувалося frz (02.03.2021 20:24:12)

Re: Кодування файлу

koala

У вас є:
- сервер SnowFlake;
- безкоштовний сервер Google Cloud/Amazon Cloud, який ви хочете використовувати для перекодування;
- Google Drive.
Усе так?

Спершу клієнт (Databricks) витягує дані з Snowflake, передає дані POST-ріквестом в кастомну API котра хоститься на ec2 (з Google Cloud змігрував на ec2 оскільки компанія вирішила заплатити саме за ec2), API зберігає передане значення в файл csv і далі надсилає в Google Drive.

Чому саме в csv?

Бізнес-вимоги.

Може, проблема саме в виборі діалекту?

Проблеми вже нема. Було обмеження в кількості переданих API-ріквестом даних при використанні безкоштовного інстансу Google Cloud; це вирішилося шляхом міграції на платний ec2. Також була проблема з перенесенням стрічки якщо в  одній комірці траплялися значення на декілька рядків - вирішено шляхом "лапкування" (див. нижче). Також була проблема коли в оригінальному значенні комірки траплявся символ подвійної лапки - вирішено ріплейсом подвійної лапки у дві "косі" лапки
https://replace.org.ua/post/154328/#p154328

доповнив код string.replace("\"","``") для автозаміни подвійних лапок на дві одинарні ``.


А в SnowFlake є внутрішній механізм експорту в CSV. Може, варто ним скористатися?

Це рішення розглядалося і було відкинене бізнес-користувачами
https://replace.org.ua/post/154338/#p154338

Був інший варіант - зберігати з snowflake напряму в S3, для цього є штатні засоби; однак для використання цього рішення користувачам потрібне додаткове ПЗ - S3 браузер; на презентації варіантів бізнес-користувачі обрали варіант із google drive.

Поки що тестую далі на більшій кількості різних csv, so far so good, якщо щось ще вилізе - буду фіксити.



ping

корисним буває правило "лапкувати" ВСІ значення при записі

Я так і роблю:
https://replace.org.ua/post/154326/#p154326

file_content = file_content + delimiter_symbol.join("\"" + str(z) + "\"" for z in x) + '''
'''

а саме - ось тут:

"\"" + str(z) + "\""