您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何从不同的架构将公共数据插入到临时表中?

如何从不同的架构将公共数据插入到临时表中?

首先,您可以创建一个VIEW以提供此功能

CREATE VIEW orders AS
SELECT '1'::int            AS source -- or any other tag to identify source
      ,"OrderNumber"::text AS order_nr
      ,"InvoiceNumber"     AS tansaction_id -- no cast .. is int already
      ,"OrderDate" AT TIME ZONE 'UTC' AS purchase_date -- !! see explanation
FROM   tbl_newegg

UNION  ALL  -- not UNION!
SELECT 2
       "amazonOrderId"
      ,"merchant-order-id"
      ,"purchase-date"
FROM   tbl_amazon;

您可以像查询其他任何表一样查询此视图:

SELECT * FROM orders WHERE order_nr = 123 AND source = 2;

source如果order_nr不是唯一的,则是必需的。您还如何保证不同来源的唯一订单号?

timestamp without time zone在全球范围内,A 是模棱两可的。它仅与时区有关。如果您将timestamp和混合使用timestamptz,则需要将其timestampAT TIME ZONE结构放置在特定的时区以使其正常工作。有关更多说明,请阅读此相关答案

我使用UTC作为时区,您可能需要提供其他时间。一个简单的转换"OrderDate"::timestamptz将假定您当前的时区。AT TIME ZONE应用于中的timestamp结果timestamptz。这就是为什么我没有添加其他演员表的原因。

虽然你 可以 ,我建议不要在Postgresql中使用驼峰标识符 以往 。避免了多种可能的混乱。请注意我提供的小写字母标识符(现在没有多余的双引号)。

请勿将varchar(25)用作类型order_nr。只要使用text无任意长度调节剂,如果它必须是一个字符串。如果所有订单号仅由数字组成,integer或者bigint会更快。

其他 2022/1/1 18:33:47 有647人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶