<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>目标存储 on 老张开工了</title>
    <link>/%E7%9B%AE%E6%A0%87%E5%AD%98%E5%82%A8/</link>
    <description>Recent content in 目标存储 on 老张开工了</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Tue, 07 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="/%E7%9B%AE%E6%A0%87%E5%AD%98%E5%82%A8/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>数据加载（Load）：目标存储与写入</title>
      <link>/posts/2026/04/etl-load/</link>
      <pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate>
      <guid>/posts/2026/04/etl-load/</guid>
      <description>数据加载概述 数据加载是 ETL 流程的最后一公里。经过抽取和转换的数据，最终需要写入目标存储系统，供分析师、数据科学家和业务系统使用。&#xA;加载环节看似简单——不就是把数据写进去吗？但实际上，加载策略的选择直接影响数据的一致性和可用性。是全量刷新还是增量更新？用 INSERT 还是 COPY？数据量大时如何保证写入性能？加载过程中出错了怎么办？这些问题都必须在设计阶段想清楚。&#xA;加载策略 全量加载 全量加载每次都将整个数据集写入目标表。它最简单直接，适合数据量不大或者需要完全重建分析视图的场景。&#xA;-- 全量加载：先清空目标表，再写入全部数据 TRUNCATE TABLE dwd_sales_daily; INSERT INTO dwd_sales_daily SELECT * FROM clean_sales_data; 优点：逻辑简单、数据完全一致、不需要处理变更追踪。&#xA;缺点：数据量大时耗时很长、消耗大量资源、加载期间数据不可用。&#xA;增量加载 增量加载只写入自上次加载以来发生变化的数据。它高效但实现复杂，需要可靠的变更追踪机制。&#xA;import psycopg2 import pandas as pd from datetime import datetime, timedelta def incremental_load(source_conn_str, target_conn_str, table_name, date_column): &amp;#34;&amp;#34;&amp;#34;增量加载：只加载最近一天的数据&amp;#34;&amp;#34;&amp;#34; yesterday = (datetime.now() - timedelta(days=1)).strftime(&amp;#34;%Y-%m-%d&amp;#34;) # 从源系统抽取增量数据 source_conn = psycopg2.connect(source_conn_str) query = f&amp;#34;SELECT * FROM {table_name} WHERE {date_column} &amp;gt;= &amp;#39;{yesterday}&amp;#39;&amp;#34; df = pd.read_sql(query, source_conn) source_conn.close() print(f&amp;#34;抽取到 {len(df)} 条增量记录&amp;#34;) if df.</description>
    </item>
  </channel>
</rss>
