最初のもの:ソースデータを変更してください。代わりにETLを実行し、最終段階に変換します。それを定期的に行い、新しいデータを世話してください。
あなただけはそれで2つの警告がすべての新しいデータのための作業が、そこにあるべきでトリガーを作成することができます。データが欠落し、あなたがそれをQAにできないにつながる
- 失敗。
- 誤ってソースデータを誤って変更した場合は、バックアップを取らない限り元に戻すことはできません。バックアップしないと元に戻すことはできません。
代わりにTalendやPentaho KettleのようなETLツールを見てください。独自のETLスクリプトを作成したり、何でも作成できます。ジェンキンスを使用してこれを定期的にスケジュールしてください。
今、変換自体について。
for '#'
#"
この場合の正規引用として扱われることを意味し、#
エスケープ記号であろうことを示しています。
substring(campaign from '%-%-#"%#"' for '#')
このように、パターン内の引用符間のすべてを選択します。 %
はワイルドカードで、LIKE
の比較で使用されているものと同じです。最後のグループのすべてが返されます。私はこのような新しいテーブルを作成します^(.*?)\s*\}
:
類似した - これは、より良い正規表現正規表現は
^(.*?)\s*\{
そして三番目のためになる第二のカラムについては
substring(campaign from '.*?-.*?-(.*)')
で行うことができます
しかし、あなたはアップデートを行う必要がある場合、これはどのように次のようになります。
UPDATE adwords SET
campaign = substring(campaign FROM '^\w{2}-\w+-(.*)$'),
ad_group = substring(ad_group FROM '^(\w+)\s*\{\w+\}$'),
match_type = substring(match_type FROM '^(\w+)\s*\}$')
WHERE campaign ~ '^\w{2}-\w+-(.*)$'
https://www.postgresql.org/docs/9.3/static/functions-matching.html# –