Как разобрать строку и создать строки в SQL (postgres) - PullRequest
0 голосов
/ 21 июля 2009

У меня есть одно поле базы данных, которое содержит дату начала, дату окончания и исключения в форме

available DD/MONTH/YYYY [to DD/MONTH/YYYY]?[, exclude WORD [, WORD]*]?

Это означает, что он всегда начинается с «доступные ДД / МЕСЯЦ / ГГГГ», опционально имеет одно значение «до ДД / МЕСЯЦ / ГГГГ» и, необязательно, имеет условие исключения, представляющее собой список строк, разделенных запятыми. Подумайте значения регулярных выражений для +, * и?

Мне было поручено извлечь данные, поэтому теперь у нас будет столбец «startdate», «enddate» и новая таблица, которая будет содержать исключения. Необходимо будет заполнить столбцы startdate и enddate значениями, проанализированными из строки доступности. Также потребуется создать несколько записей в новой таблице исключений, по одной для каждого из значений, разделенных запятыми, после ключевого слова exclude в строке доступности.

Это миграция, которую я могу сделать только в SQL (postgres 8.4)?

Это против postgres 8.4.

Обновление: С помощью сотрудника у нас теперь есть сценарий sql, который в результате приводит к выполнению операторов вставки на основе синтаксического анализа исключений. Он использует кучу операторов case и манипуляции со строками в sql для генерации результатов. Затем я отправляю вывод в файл и выполняю этот файл для выполнения вставок. Я делаю то же самое для столбцов даты начала и окончания.

Это не 100% sql, а простой файл .bat или .sh, который запускает первый файл .sql, а затем сгенерированный - все, что нужно для его запуска.

Спасибо за ввод.

Ответы [ 2 ]

2 голосов
/ 22 июля 2009

Возможно, вы можете сделать это с помощью комбинации функций регулярного выражения (и функций to_date () или to_timestamp ().

Но может быть проще просто исказить текст в функции, скажем, pl / perl. Это позволит вам получить доступ ко всем функциям манипулирования в Perl, сохраняя при этом работу в базе данных, как вам кажется.

1 голос
/ 21 июля 2009

почему один SQL?

Написать простой скрипт на Ruby / Python / Basic для чтения данных из источника, их анализа и помещения в базу данных назначения.

Или он такой большой?

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