0

我希望能够创建一个包含当前月份的新表。

基本上,我将创建一个 python 脚本,每个月都会自动加载大量犯罪数据,这个 python 脚本将创建一个名为 crime_data 的新表(这很简单)。然后,我想运行第二个脚本,该脚本将创建一个新表,其名称带有系统日期月份的日期戳,并过滤掉原始犯罪数据的元素。

这可能吗?

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语句正是做这两件事。1 - 形成字符串。2 - 将其作为语句执行。

于 2012-12-05T15:31:09.980 回答