<?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>/%E6%95%B0%E6%8D%AE%E6%8A%BD%E5%8F%96/</link>
    <description>Recent content in 数据抽取 on 老张开工了</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Fri, 03 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="/%E6%95%B0%E6%8D%AE%E6%8A%BD%E5%8F%96/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>数据抽取（Extract）：数据源与连接</title>
      <link>/posts/2026/04/etl-extract/</link>
      <pubDate>Fri, 03 Apr 2026 00:00:00 +0000</pubDate>
      <guid>/posts/2026/04/etl-extract/</guid>
      <description>数据抽取概述 数据抽取是 ETL 流程的第一个环节，也是后续所有工作的基础。如果把 ETL 比作烹饪，抽取就是&amp;quot;采购食材&amp;quot;——食材的质量和新鲜度直接决定了最终菜品的好坏。&#xA;在实际工作中，数据抽取面临的挑战往往比想象中大：源系统的类型五花八门、数据量可能非常庞大、抽取过程不能影响业务系统的正常运行、网络不稳定导致连接中断等。因此，设计一个健壮的数据抽取方案是整个 ETL 工程的起点。&#xA;数据源的类型 现代数据架构中的数据源可以大致归为以下几类：&#xA;关系型数据库 关系型数据库是最常见的数据源。企业核心业务数据通常存储在 MySQL、PostgreSQL、Oracle、SQL Server 等系统中。从关系型数据库抽取数据通常有几种方式：直接执行 SELECT 查询、使用数据库的导出工具、通过日志复制（CDC）等。&#xA;文件系统 文件是另一种常见的数据载体。CSV 和 JSON 是最通用的交换格式，几乎任何系统都能读写。在大数据生态中，Parquet 和 Avro 这类列式存储格式越来越流行，它们具有更好的压缩率和查询性能。&#xA;API 接口 许多 SaaS 平台（如 Salesforce、HubSpot、Google Analytics）只通过 API 暴露数据。RESTful API 是目前的主流协议，GraphQL 也在逐渐普及。API 抽取通常需要考虑认证、限流、分页等问题。&#xA;消息队列和流数据 Kafka、RabbitMQ、AWS Kinesis 等消息系统承载着实时数据流。从这类系统抽取数据时，通常使用消费者模式持续订阅数据。这类场景往往偏向实时或准实时处理。&#xA;数据源类型 典型例子 抽取方式 常见挑战 关系型数据库 MySQL, PostgreSQL, Oracle JDBC/ODBC 查询、导出 dump 大表全量扫描影响性能 文件 CSV, JSON, Parquet, Avro 文件读取、FTP/S3 下载 文件编码、格式不一致 API REST, GraphQL, SOAP HTTP 请求 限流、认证、分页 消息队列 Kafka, RabbitMQ, Kinesis Consumer 订阅 消息顺序、重复消费 从关系型数据库抽取数据 JDBC 方式（Python 示例） JDBC（Java Database Connectivity）是连接数据库的标准接口。在 Python 中，我们可以使用数据库驱动库来实现类似的功能。</description>
    </item>
  </channel>
</rss>
