Обработка специальных символов и escape-последовательностей в CSV с помощью команды Spark и PostgreSQL COPYPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Обработка специальных символов и escape-последовательностей в CSV с помощью команды Spark и PostgreSQL COPY

Сообщение Anonymous »

Я использую PySpark для перераспределения DataFrame и записи его в файл CSV, который позже загружаю в PostgreSQL с помощью команды COPY. Однако при выполнении команды COPY я столкнулся со следующей ошибкой:

Код: Выделить всё

psycopg2.errors.BadCopyFileFormat: extra data after last expected column
Я подозреваю, что эта ошибка вызвана специальными символами в моих данных, например двойными кавычками (), запятые (), косая черта () и escape-символы. Вот упрощенная версия моего кода:

Код: Выделить всё

df_ops.df.repartition(num_partitions).write.mode("overwrite").format("csv").option("header", "false").save(file_path)

query = f"""COPY {table_name} ({column_string}) FROM STDIN WITH (FORMAT CSV, HEADER FALSE, DELIMITER ',', NULL '');"""
Пример данных:
Исходная строка:

Код: Выделить всё

2024-07-18 12:09:28,2012420012080452979,60,V2,"Suspected fraud, decline / Transactions declined based on Risk Score",1
После преобразования (CSV):

Код: Выделить всё

2024-07-18 12:09:28,2012420012080452979,60,V2,"\"Suspected fraud, decline / Transactions declined based on Risk Score\"",1
Проблема:
  • Мои данные содержат смесь специальных символов, запятых и двойных кавычек.
  • Команда COPY в PostgreSQL выдает ошибку при обработке CSV из-за этих специальных символов.
Вопрос:
Как я могу гарантировать, что вывод CSV из Spark правильно отформатирован для обработки всех специальных символов (двойных кавычек, запятых, косой черты и т. д.) при использовании команды PostgreSQL COPY ? Должен ли я настроить параметры записи Spark или оператор PostgreSQL COPY, чтобы справиться с этим?
Любые рекомендации о том, как обрабатывать эти escape-последовательности и обеспечивать обработку команд COPY были бы очень признательны за правильность данных.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -postgresq
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»