0

現在の月を含む新しいテーブルを作成できるようにしたいと考えています。

基本的に、毎月大量の犯罪データを自動的にロードする Python スクリプトを作成します。この Python スクリプトは、crime_data という名前の新しいテーブルを作成します (これは簡単な作業です)。次に、システム日付の月が日付スタンプされた名前の新しいテーブルを作成し、元の Crime_data の要素を除外する 2 番目のスクリプトを実行します。

これは可能ですか?

4

1 に答える 1

1

可能です。そのような PL/pgSQL 関数を作成してみてください:

BEGIN

EXECUTE 'CREATE TABLE crime_data_'||to_char(CURRENT_DATE, 'Month')||' AS
SELECT *
FROM crime_data cd
WHERE date_part(''month'', cd.date) = date_part(''month'', CURRENT_DATE)';

END;

ニーズに合わせて調整する必要がありますが、アイデアはクエリを文字列として形成するEXECUTEことです。

詳細はこちら:CREATE TABLE AS to_char() date_part

VIEWUPDテーブルではなく、必要なデータを使用して を作成する方がよい場合があります。

EXECUTE 'CREATE VIEW crime_data_'||to_char(CURRENT_DATE, 'Month')||' AS
SELECT *
FROM crime_data cd
WHERE date_part(''month'', cd.date) = date_part(''month'', CURRENT_DATE)';

SELECTこれVIEWはテーブルであったため、重複したデータを保持する必要はありません。詳細はこちら: CREATE VIEW.

UPD2 このことをテストするには:

1) する:

SELECT 'CREATE TABLE crime_data_'||to_char(CURRENT_DATE, 'Month')||' AS
        SELECT *
        FROM crime_data cd
        WHERE date_part(''month'', cd.date) = date_part(''month'', CURRENT_DATE)'

2) この結果を取得SELECTし、通常のステートメントとして実行します。

PL/pgSQLEXECUTEステートメントはまさにこの 2 つのことを行います。1 - 文字列を形成します。2 - ステートメントとして実行します。

于 2012-12-05T15:31:09.980 に答える