PL / pg SQL лучший способ lo_import текстового файла, а затем вставка строк в другую таблицу (обрезка / string_to_array)? - PullRequest
0 голосов
/ 09 июля 2020

Я использую lo_import для загрузки большого текстового файла, содержащего строки, разделенные знаком |, но каждая строка может иметь переменное количество полей, например,

REC1 | 1 | 2 | 3 | REC2 | 1 | 2 | 3 | 4 | 5 | REC3 | 1 |

Я хочу получить каждую строку и вставить в другую таблицу, содержащую столбец varchar []. В настоящее время я использую:

string_to_array (rtrim (unnest (string_to_array (replace (convert_from (lo_get (vFileOID), 'utf8'), chr (13), ''), chr (10))), '|'), '|')

Я избавляюсь от chr (13), поскольку файл может иметь CR / LF (windows) или просто LF (unix)

Я также RTRIMing последний '|', так как это указывает на конец строки, поэтому я не получаю пустой элемент в массиве.

Просто интересно, есть ли лучший (более аккуратный / быстрый) способ сделать это?

Я экспериментировал с COPY TO, который лучше обрабатывает окончания строк (и устраняет необходимость во внутреннем unnest / string_to_array), но я ' m пытается избежать создания (другой) «временной таблицы» для получения данных, когда pg_largeobject идеален (oid позволяет мне загружать несколько файлов)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...