2009-07-21 18 views
0

我有一個包含一個開始日期,結束日期單個數據庫字段,並且排除在形式如何解析字符串和SQL創建行(Postgres的)

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

總是意味着它開始以「提供DD/MONTH/YYYY「,可以有一個單獨的」DD/MONTH/YYYY「,並且可以有一個排除子句,它是逗號分隔的字符串列表。想想正則表達式對於+,*和?

我的任務是提取數據,因此我們現在將有一個「startdate」列,「enddate」列和一個包含排除項的新表。它需要使用從可用性字符串解析的值填充startdate和enddate列。它還需要在新的排除表中創建多個記錄,每個逗號分隔值在可用性字符串中的「排除」關鍵字之後。

這是一個只能在SQL中執行的遷移(postgres 8.4)嗎?

這是針對postgres 8.4。

更新:在同事的幫助下,我們現在有了一個sql腳本,它的結果sql基於排除的解析執行插入語句。它在sql中使用一堆case語句和字符串操作來生成結果。然後我將輸出發送到一個文件並執行該文件來執行插入。我對開始日期和結束日期列做了相同的處理。

這不是100%的sql,而是一個運行第一個.sql文件的簡單.bat或.sh文件,然後生成的文件就是所需的全部內容。

感謝您的意見。

+0

是否會有一個表上的id,startdate和enddate是一個外部排除表上的鍵? – rfusca 2009-07-22 04:43:17

+0

是的,具有startdate和enddate的實體有一個id,它與排除有許多關係,所以有兩個連接表。 – digitaljoel 2009-07-22 19:32:47

回答

2

你也許可以做到這一點與regexp functions的組合(和TO_DATE()或TO_TIMESTAMP()函數。

但它可能會更易於只是裂傷在說PL/Perl中的功能的文本。這將讓你訪問perl中的全部操作函數,同時保持數據庫中的工作看起來像你的規範。

1

爲什麼單個SQL?

在Ruby/Python/Basic中編寫簡單腳本以從源讀取數據,解析它並將其放入目標數據庫。

還是這麼大?