<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>WebAssembly on DuckDB 实验室</title><link>https://duckdblab.org/zh/tags/webassembly/</link><description>Recent content in WebAssembly on DuckDB 实验室</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Fri, 08 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://duckdblab.org/zh/tags/webassembly/index.xml" rel="self" type="application/rss+xml"/><item><title>DuckDB在线Shell：浏览器内免安装的数据分析神器</title><link>https://duckdblab.org/zh/post/duckdb-online-shell/</link><pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate><guid>https://duckdblab.org/zh/post/duckdb-online-shell/</guid><description>&lt;h2 id="引言"&gt;引言
&lt;/h2&gt;&lt;p&gt;想象一下这个场景：你正在客户现场做技术演示，电脑上没有装任何数据分析工具。或者你在咖啡馆，临时需要验证一个数据分析逻辑，但笔记本只有 4GB 内存。又或者你的协作者在一台没有安装权限的受限机器上，需要快速查一下数据。&lt;/p&gt;
&lt;p&gt;传统解决方案往往是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;求 IT 部门安装软件 —— 等三天&lt;/li&gt;
&lt;li&gt;自己写个 Python 脚本 —— 半小时过去了&lt;/li&gt;
&lt;li&gt;用 Google Sheets —— 数据太大传不上去&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;现在有一个更好的选择：&lt;strong&gt;DuckDB 在线 Shell&lt;/strong&gt;（&lt;a class="link" href="https://shell.duckdb.org" target="_blank" rel="noopener"
 &gt;shell.duckdb.org&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;打开浏览器，访问这个网址，你就拥有了一个完整的 &lt;strong&gt;DuckDB v1.5.2&lt;/strong&gt;（当前版本）交互式查询环境——所有计算都在你的浏览器本地完成，&lt;strong&gt;数据不会上传到任何服务器&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;本文带你全面了解这个工具的功能、用法和实战场景。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="1-shellduckdborg-是什么"&gt;1. shell.duckdb.org 是什么？
&lt;/h2&gt;&lt;h3 id="核心原理webassembly--duckdb"&gt;核心原理：WebAssembly + DuckDB
&lt;/h3&gt;&lt;p&gt;DuckDB 在线 Shell 的核心技术是 &lt;strong&gt;WebAssembly（Wasm）&lt;/strong&gt;。DuckDB 的 C++ 引擎被编译成 Wasm 二进制文件，然后在浏览器中直接运行。这意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;无需服务器&lt;/strong&gt;：所有查询都在你的浏览器本地执行&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;无需安装&lt;/strong&gt;：打开网页就能用，零配置&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;数据留在本地&lt;/strong&gt;：你加载的数据文件不会离开你的电脑&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;跨平台&lt;/strong&gt;：Windows、macOS、Linux、iPad 都可以用&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;离线可用&lt;/strong&gt;：页面加载后，断开网络也能继续查询&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="与传统方式对比"&gt;与传统方式对比
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;维度&lt;/th&gt;
 &lt;th&gt;在线 Shell&lt;/th&gt;
 &lt;th&gt;本地安装&lt;/th&gt;
 &lt;th&gt;Jupyter Notebook&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;安装步骤&lt;/td&gt;
 &lt;td&gt;0 步&lt;/td&gt;
 &lt;td&gt;3-5 步&lt;/td&gt;
 &lt;td&gt;5-10 步&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;启动时间&lt;/td&gt;
 &lt;td&gt;2 秒&lt;/td&gt;
 &lt;td&gt;5-30 分钟&lt;/td&gt;
 &lt;td&gt;2-5 分钟&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;权限要求&lt;/td&gt;
 &lt;td&gt;无&lt;/td&gt;
 &lt;td&gt;需管理员权限&lt;/td&gt;
 &lt;td&gt;需 Python 环境&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;内存限制&lt;/td&gt;
 &lt;td&gt;浏览器上限&lt;/td&gt;
 &lt;td&gt;系统内存&lt;/td&gt;
 &lt;td&gt;系统内存&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;可分享性&lt;/td&gt;
 &lt;td&gt;一键分享 URL&lt;/td&gt;
 &lt;td&gt;不可分享&lt;/td&gt;
 &lt;td&gt;需搭建服务&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="技术栈"&gt;技术栈
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;┌─────────────────────────────────────┐
│ DuckDB Web Shell UI │
├─────────────────────────────────────┤
│ xterm.js (终端模拟器) │
├─────────────────────────────────────┤
│ DuckDB Wasm (WebAssembly 引擎) │
├─────────────────────────────────────┤
│ Web API (File API, IndexedDB) │
├─────────────────────────────────────┤
│ 浏览器 (Chrome/Firefox/Safari)│
└─────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="2-界面与基本操作"&gt;2. 界面与基本操作
&lt;/h2&gt;&lt;h3 id="页面布局"&gt;页面布局
&lt;/h3&gt;&lt;p&gt;打开 &lt;a class="link" href="https://shell.duckdb.org" target="_blank" rel="noopener"
 &gt;shell.duckdb.org&lt;/a&gt;，你会看到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;顶部导航栏&lt;/strong&gt;：New（新建会话）、Share（分享）、Import（导入文件）、Datasets（示例数据集）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主区域&lt;/strong&gt;：一个完整的终端模拟器，支持彩色输出和语法高亮&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主题切换&lt;/strong&gt;：支持亮色/暗色模式&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="导航按钮"&gt;导航按钮
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;按钮&lt;/th&gt;
 &lt;th&gt;功能&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;New&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;新建一个干净的会话，重置所有状态&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Share&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;生成当前会话的可分享链接&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Import&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;从本地电脑选择文件加载到 Shell 中&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Datasets&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;快速加载官方提供的示例数据集&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="示例数据集一览"&gt;示例数据集一览
&lt;/h3&gt;&lt;p&gt;Datasets 菜单内置了 7 个可直接加载的数据集：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;数据集&lt;/th&gt;
 &lt;th&gt;类型&lt;/th&gt;
 &lt;th&gt;描述&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;NL Railway (DuckLake)&lt;/td&gt;
 &lt;td&gt;DuckLake&lt;/td&gt;
 &lt;td&gt;荷兰铁路时刻表数据&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Star Trek (CSV)&lt;/td&gt;
 &lt;td&gt;CSV&lt;/td&gt;
 &lt;td&gt;星际迷航演员表&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Train Services (Parquet)&lt;/td&gt;
 &lt;td&gt;Parquet&lt;/td&gt;
 &lt;td&gt;铁路服务数据&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;TPCH on DuckLake&lt;/td&gt;
 &lt;td&gt;DuckLake&lt;/td&gt;
 &lt;td&gt;TPC-H 基准测试数据&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;NYC Taxi (Parquet)&lt;/td&gt;
 &lt;td&gt;Parquet&lt;/td&gt;
 &lt;td&gt;纽约出租车数据（千万级行数）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;NYC Bike Trips (Spatial)&lt;/td&gt;
 &lt;td&gt;Spatial&lt;/td&gt;
 &lt;td&gt;纽约自行车出行 + 地理空间数据&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Iceberg (S3 Tables)&lt;/td&gt;
 &lt;td&gt;Iceberg&lt;/td&gt;
 &lt;td&gt;S3 表格式的 Iceberg 数据&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;点击任何一个数据集，Shell 会自动加载并执行示例查询，一键体验 DuckDB 的强大功能。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="3-核心命令详解"&gt;3. 核心命令详解
&lt;/h2&gt;&lt;h3 id="31-通用--命令"&gt;3.1 通用 &lt;code&gt;.&lt;/code&gt; 命令
&lt;/h3&gt;&lt;p&gt;DuckDB Shell 提供了一系列以点开头的特殊命令：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;help&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 显示所有可用命令的帮助
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;help&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;all&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 显示扩展帮助
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;version&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 显示当前 DuckDB 版本
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tables&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 列出所有表
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;schema&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;表名&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 显示表的 CREATE 语句
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;timer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;off&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 开启/关闭查询计时
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;maxrows&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 设置最大显示行数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;maxwidth&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 设置最大显示宽度
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;mode&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;markdown&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 切换输出模式（markdown、csv、json 等）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nullvalue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;N/A&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 设置 NULL 值的显示文本
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;separator&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;,&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 设置列分隔符
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;off&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 开启/关闭表头显示
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;highlight&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;off&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 开启/关闭语法高亮
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="32-files-文件管理命令"&gt;3.2 &lt;code&gt;.files&lt;/code&gt; 文件管理命令
&lt;/h3&gt;&lt;p&gt;这是在线 Shell 中&lt;strong&gt;最实用的命令之一&lt;/strong&gt;。&lt;code&gt;.files&lt;/code&gt; 系列命令用于管理上传到浏览器本地的文件：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 列出所有已注册的文件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;drop&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 移除特定文件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;drop&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;all&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 清除所有已注册的文件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;注意：在 Shell 界面上传文件有两种方式——点击 Import 按钮或执行 &lt;code&gt;.pick&lt;/code&gt; 命令。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="33-其他实用命令"&gt;3.3 其他实用命令
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pick&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 打开文件选择对话框，从电脑选择文件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Hello&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 打印文字
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;share&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 生成当前会话的分享链接
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;show&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 显示当前配置
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;last&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 重新渲染上次结果（不截断）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;large_number_rendering&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;MODE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 切换大数字的可读渲染
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;progress_bar&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 开启进度条显示
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="4-实战示例"&gt;4. 实战示例
&lt;/h2&gt;&lt;h3 id="示例-1直接查询远程-parquet-文件"&gt;示例 1：直接查询远程 Parquet 文件
&lt;/h3&gt;&lt;p&gt;这是 DuckDB 最强大的特性之一——&lt;strong&gt;直接在 URL 上运行 SQL&lt;/strong&gt;，无需下载：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 加载 HTTPFS 扩展
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;LOAD&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;httpfs&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 查询远程 Parquet 文件的行数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://blobs.duckdb.org/data/yellow_tripdata_2010-01.parquet&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;输出：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;┌──────────────┐
│ count_star() │
│ int64 │
├──────────────┤
│ 14863778 │
└──────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这一千四百万行数据，查询在几秒内返回——全部在浏览器中本地完成。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 多列聚合查询
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trips&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tip_amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;avg_tip&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;trip_distance&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;avg_distance&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://blobs.duckdb.org/data/yellow_tripdata_2010-01.parquet&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;输出：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;┌──────────┬────────────────────┬────────────────────┐
│ trips │ avg_tip │ avg_distance │
│ int64 │ double │ double │
├──────────┼────────────────────┼────────────────────┤
│ 14863778 │ 0.6714118288096592 │ 2.6282668161494915 │
└──────────┴────────────────────┴────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="示例-2查询本地-csv-文件"&gt;示例 2：查询本地 CSV 文件
&lt;/h3&gt;&lt;p&gt;点击 Import（或执行 &lt;code&gt;.pick&lt;/code&gt;）选择本地的 CSV 文件，然后直接查询：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 假设你上传了一个名为 sales.csv 的文件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 文件名自动成为表名（去除扩展名）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sales&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;LIMIT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 按产品类别汇总
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;category&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;total_sales&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;order_count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;avg_order_value&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sales&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;GROUP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;category&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;total_sales&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="示例-3查询远程-csv-文件"&gt;示例 3：查询远程 CSV 文件
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;LOAD&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;httpfs&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://blobs.duckdb.org/data/Star_Trek Season_1.csv&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;LIMIT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="示例-4多数据源-join"&gt;示例 4：多数据源 JOIN
&lt;/h3&gt;&lt;p&gt;在线 Shell 支持跨文件 JOIN——你可以同时加载多个文件并执行关联查询：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 导入 orders.csv 和 customers.csv 后：
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;city&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;total_spent&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;orders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;JOIN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;customers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ON&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;GROUP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;city&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;total_spent&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;LIMIT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="示例-5加载-ducklake-格式"&gt;示例 5：加载 DuckLake 格式
&lt;/h3&gt;&lt;p&gt;DuckLake 是 DuckDB 的原生数据湖格式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 加载荷兰铁路数据集
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;ATTACH&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://blobs.duckdb.org/datalake/nl railway.ducklake&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;nl_railway&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;TYPE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ducklake&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;USE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;nl_railway&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tables&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 查询列车服务
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;services&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;LIMIT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="示例-6启用计时器进行性能测试"&gt;示例 6：启用计时器进行性能测试
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;timer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;passenger_count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trip_count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total_amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;avg_fare&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://blobs.duckdb.org/data/yellow_tripdata_2010-01.parquet&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;GROUP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;passenger_count&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;passenger_count&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;启用 &lt;code&gt;.timer&lt;/code&gt; 后，每条查询执行完毕都会显示耗时，方便你评估查询性能。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="5-典型应用场景"&gt;5. 典型应用场景
&lt;/h2&gt;&lt;h3 id="场景-1临时机器上的数据分析"&gt;场景 1：临时机器上的数据分析
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：出差在外，借用的电脑上没有安装任何数据工具。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：打开浏览器，访问 shell.duckdb.org，上传数据文件或直接查询远程 Parquet URL，立即开始分析。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实际案例&lt;/strong&gt;：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;一位数据分析师在客户现场需要用客户的 50GB 服务器日志做快速分析。客户电脑只装了浏览器。他让客户把 Parquet 文件放到 S3 上，然后在在线 Shell 中执行了三行 SQL，五分钟内就给出了初步结论。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="场景-2客户演示"&gt;场景 2：客户演示
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：给客户演示数据分析能力，但不想花时间配置环境。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;将数据以 Parquet/CSV 格式放在可公开访问的 URL 上&lt;/li&gt;
&lt;li&gt;在演示前用 Share 功能生成一个预加载了查询的分享链接&lt;/li&gt;
&lt;li&gt;客户只需点击链接，即可看到完整的分析结果&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;为什么这很强大&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;无需在客户电脑上安装任何软件&lt;/li&gt;
&lt;li&gt;无需担心版本兼容性&lt;/li&gt;
&lt;li&gt;客户可以亲自体验，增加信任感&lt;/li&gt;
&lt;li&gt;Share 链接保留了完整的查询历史&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="场景-3协作者没有安装权限"&gt;场景 3：协作者没有安装权限
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：协作者在公司 IT 管控严格的电脑上工作，无法安装任何软件。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：将数据通过 Import 上传或通过公开 URL 加载，协作者即可在浏览器中完成全部数据探索工作。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;优势&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不需要管理员权限&lt;/li&gt;
&lt;li&gt;不需要 IT 审批流程&lt;/li&gt;
&lt;li&gt;数据和查询完全在本地执行，安全合规&lt;/li&gt;
&lt;li&gt;支持 &lt;code&gt;.share&lt;/code&gt; 命令一键分享当前工作会话&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="场景-4教学和培训"&gt;场景 4：教学和培训
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：在 SQL 培训课上，每个学员需要一套独立的 DuckDB 环境。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：所有学员只需打开浏览器访问 shell.duckdb.org，无需任何前置安装步骤。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;教学优势&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;零环境配置，5 分钟就能开始讲课&lt;/li&gt;
&lt;li&gt;每个学员的操作互不影响&lt;/li&gt;
&lt;li&gt;可以用 &lt;code&gt;.share&lt;/code&gt; 分享自己的查询给培训师看&lt;/li&gt;
&lt;li&gt;内置 Datasets 提供了现成的教学数据&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="场景-5快速验证和原型设计"&gt;场景 5：快速验证和原型设计
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：你想快速验证一个 SQL 查询逻辑，不想启动整个开发环境。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：打开在线 Shell，写 SQL，看到结果。几秒钟内完成验证。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 比如你想验证一个日期计算逻辑：
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;2026-05-08&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;INTERVAL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;1 month&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;next_month&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;date_trunc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;month&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;2026-05-08&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;month_start&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;last_day&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;2026-05-08&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;month_end&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="6-限制与注意事项"&gt;6. 限制与注意事项
&lt;/h2&gt;&lt;p&gt;虽然 DuckDB 在线 Shell 非常强大，但它也有一些限制需要了解：&lt;/p&gt;
&lt;h3 id="内存限制"&gt;内存限制
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;浏览器 Wasm 的内存上限通常为 &lt;strong&gt;4GB&lt;/strong&gt;（Chrome 默认）&lt;/li&gt;
&lt;li&gt;对于超过 2GB 的大数据集，建议做采样或过滤后再查询&lt;/li&gt;
&lt;li&gt;大型 JOIN 操作可能超出内存限制&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="文件大小建议"&gt;文件大小建议
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;CSV 文件：建议 &lt;strong&gt;&amp;lt; 500MB&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Parquet 文件：建议 &lt;strong&gt;&amp;lt; 2GB&lt;/strong&gt;（Parquet 有列式压缩，同样的数据更小）&lt;/li&gt;
&lt;li&gt;超过此范围，推荐使用本地安装版 DuckDB&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="网络依赖"&gt;网络依赖
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;首次加载需要联网下载 Wasm 引擎（约 5MB）&lt;/li&gt;
&lt;li&gt;查询远程文件（通过 URL）需要网络&lt;/li&gt;
&lt;li&gt;但加载完成后，断开网络也可以继续使用已加载的数据&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="不支持的功能"&gt;不支持的功能
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;无法安装自定义扩展（扩展需要在 Wasm 编译时预置）&lt;/li&gt;
&lt;li&gt;无法直接写磁盘文件（浏览器沙箱限制）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.files add&lt;/code&gt; 命令在当前版本中不支持（使用 Import 按钮或 &lt;code&gt;.pick&lt;/code&gt; 替代）&lt;/li&gt;
&lt;li&gt;不支持多线程并行（Wasm 单线程限制）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="7-与其他在线数据分析工具对比"&gt;7. 与其他在线数据分析工具对比
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;特性&lt;/th&gt;
 &lt;th&gt;DuckDB Shell&lt;/th&gt;
 &lt;th&gt;SQLite Online&lt;/th&gt;
 &lt;th&gt;Google Sheets&lt;/th&gt;
 &lt;th&gt;BigQuery Console&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;执行引擎&lt;/td&gt;
 &lt;td&gt;本地浏览器&lt;/td&gt;
 &lt;td&gt;本地浏览器&lt;/td&gt;
 &lt;td&gt;云端服务器&lt;/td&gt;
 &lt;td&gt;云端服务器&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;数据隐私&lt;/td&gt;
 &lt;td&gt;✅ 数据不离开本机&lt;/td&gt;
 &lt;td&gt;✅ 数据不离开本机&lt;/td&gt;
 &lt;td&gt;❌ 数据上传&lt;/td&gt;
 &lt;td&gt;❌ 数据上传&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;离线可用&lt;/td&gt;
 &lt;td&gt;✅ 加载后可用&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;数据大小上限&lt;/td&gt;
 &lt;td&gt;~2GB&lt;/td&gt;
 &lt;td&gt;~100MB&lt;/td&gt;
 &lt;td&gt;~10M 行&lt;/td&gt;
 &lt;td&gt;无上限&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Parquet 支持&lt;/td&gt;
 &lt;td&gt;✅ 原生&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;SQL 语法&lt;/td&gt;
 &lt;td&gt;现代 OLAP SQL&lt;/td&gt;
 &lt;td&gt;传统 SQL&lt;/td&gt;
 &lt;td&gt;有限 SQL&lt;/td&gt;
 &lt;td&gt;标准 SQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;学习成本&lt;/td&gt;
 &lt;td&gt;低&lt;/td&gt;
 &lt;td&gt;低&lt;/td&gt;
 &lt;td&gt;低&lt;/td&gt;
 &lt;td&gt;高&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;费用&lt;/td&gt;
 &lt;td&gt;免费&lt;/td&gt;
 &lt;td&gt;免费&lt;/td&gt;
 &lt;td&gt;免费&lt;/td&gt;
 &lt;td&gt;按量付费&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;扩展性&lt;/td&gt;
 &lt;td&gt;浏览器受限&lt;/td&gt;
 &lt;td&gt;浏览器受限&lt;/td&gt;
 &lt;td&gt;协作好&lt;/td&gt;
 &lt;td&gt;企业级&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="8-变现建议"&gt;8. 变现建议
&lt;/h2&gt;&lt;h3 id="81-围绕-shell-的知识付费产品"&gt;8.1 围绕 Shell 的知识付费产品
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;方向：SQL 实战训练营（零门槛）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;利用在线 Shell 免安装的特性，做面向非技术人员的 SQL 培训：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;课程名称：&lt;strong&gt;&amp;ldquo;无需安装任何软件，3 天学会数据查询&amp;rdquo;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;目标受众：运营、市场、销售、HR 等非技术人员&lt;/li&gt;
&lt;li&gt;卖点：不需要装 Python、不需要配环境、打开浏览器就能学&lt;/li&gt;
&lt;li&gt;定价：¥99-¥299/人&lt;/li&gt;
&lt;li&gt;配套：提供预置数据集的 Share 链接，学员点击即用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;交付方式&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;准备 20 个不同难度的 SQL 练习&lt;/li&gt;
&lt;li&gt;每个练习附带一个 Share 链接（数据已预加载）&lt;/li&gt;
&lt;li&gt;学员在浏览器中完成全部练习&lt;/li&gt;
&lt;li&gt;作业通过 &lt;code&gt;.share&lt;/code&gt; 提交给老师批改&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="82-企业培训定制服务"&gt;8.2 企业培训定制服务
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;方向：数据素养内训&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;很多企业希望提升员工的数据分析能力，但受限于 IT 安全策略：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;企业问题：员工电脑只有浏览器，无法安装分析工具&lt;/li&gt;
&lt;li&gt;解决方案：基于 DuckDB Shell 的数据分析内训&lt;/li&gt;
&lt;li&gt;定价：¥5,000-¥20,000/次（按天计费）&lt;/li&gt;
&lt;li&gt;卖点：零安装、零 IT 介入、即刻上手&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="83-技术博客引流"&gt;8.3 技术博客引流
&lt;/h3&gt;&lt;p&gt;利用 Shell 的 Share 功能，在技术博客中嵌入可交互的 SQL 查询：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每篇文章末尾放一个 Share 链接，读者点击即可复现你的分析&lt;/li&gt;
&lt;li&gt;积累读者后，通过广告、付费专栏、咨询服务变现&lt;/li&gt;
&lt;li&gt;参考模式：类似的&amp;quot;可交互技术博客&amp;quot;在 Hacker News 上经常获得数千点赞&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="84-嵌入式数据分析工具"&gt;8.4 嵌入式数据分析工具
&lt;/h3&gt;&lt;p&gt;为 SaaS 产品集成 DuckDB Shell：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果你的产品涉及数据导出，加入&amp;quot;在浏览器中预览&amp;quot;功能&lt;/li&gt;
&lt;li&gt;用户导出 CSV/Parquet 后，一键在浏览器中打开分析&lt;/li&gt;
&lt;li&gt;可作为增值功能收费，提升产品竞争力&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="85-b-站youtube-视频内容"&gt;8.5 B 站/YouTube 视频内容
&lt;/h3&gt;&lt;p&gt;制作系列视频：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;第 1 集&lt;/strong&gt;：DuckDB Shell 入门——打开浏览器就能分析数据&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第 2 集&lt;/strong&gt;：5 个 SQL 技巧让你不用 Excel 也能做数据分析&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第 3 集&lt;/strong&gt;：用 DuckDB Shell 分析纽约出租车数据——浏览器跑 1400 万行！&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第 4 集&lt;/strong&gt;：现场演示神器：怎样在客户电脑上用 30 秒搭建数据分析环境&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;视频天然适合展示 Shell 的即时性和易用性，更容易获得传播。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="9-常见问题"&gt;9. 常见问题
&lt;/h2&gt;&lt;h3 id="q数据会上传到-duckdb-的服务器吗"&gt;Q：数据会上传到 DuckDB 的服务器吗？
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;不会。&lt;/strong&gt; 所有计算都在你的浏览器中通过 WebAssembly 完成。数据上传至内存后不会离开你的电脑。&lt;/p&gt;
&lt;h3 id="q能处理多大的数据"&gt;Q：能处理多大的数据？
&lt;/h3&gt;&lt;p&gt;浏览器 Wasm 通常有 4GB 内存限制。对于 CSV 文件建议不超过 500MB，Parquet 文件建议不超过 2GB。更大的数据推荐使用本地安装版。&lt;/p&gt;
&lt;h3 id="q能离线使用吗"&gt;Q：能离线使用吗？
&lt;/h3&gt;&lt;p&gt;可以的。首次加载 DuckDB Shell 页面后（需要网络），当 Wasm 引擎下载完成，你可以断开网络继续使用已加载的数据。&lt;/p&gt;
&lt;h3 id="q支持哪些文件格式"&gt;Q：支持哪些文件格式？
&lt;/h3&gt;&lt;p&gt;支持 DuckDB 支持的所有格式：CSV、Parquet、JSON、Excel（需扩展）等。通过 HTTPFS 扩展还支持 S3、GCS 上的远程文件。&lt;/p&gt;
&lt;h3 id="qshare-链接分享的内容是什么"&gt;Q：Share 链接分享的内容是什么？
&lt;/h3&gt;&lt;p&gt;Share 链接包含了你的所有 SQL 查询历史。接收者打开链接后会自动重放这些查询，看到相同的结果（前提是数据源可访问）。&lt;/p&gt;
&lt;h3 id="q如何导出查询结果"&gt;Q：如何导出查询结果？
&lt;/h3&gt;&lt;p&gt;可以使用 &lt;code&gt;.mode csv&lt;/code&gt; 切换到 CSV 输出模式，然后复制结果。或者将结果较小的查询结果手动保存。对于大批量导出，推荐使用本地 DuckDB。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="10-总结"&gt;10. 总结
&lt;/h2&gt;&lt;p&gt;DuckDB 在线 Shell 是数据分析领域的一个&amp;quot;隐形武器&amp;quot;。它不需要任何安装配置，打开浏览器就能使用完整的关系型查询能力。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它的核心价值在于：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;零门槛&lt;/strong&gt;——任何有浏览器的人都能使用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据隐私&lt;/strong&gt;——计算在本地完成，数据不离开电脑&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;功能完整&lt;/strong&gt;——支持 DuckDB 的核心 SQL 语法和文件格式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;场景丰富&lt;/strong&gt;——从临时查询到教学培训，从客户演示到协作者协作&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;下次当你遇到以下情况时，不要急着装软件——试试 shell.duckdb.org：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;临时机器上需要分析数据&lt;/li&gt;
&lt;li&gt;给客户做演示但不想配置环境&lt;/li&gt;
&lt;li&gt;协作者的电脑没有安装权限&lt;/li&gt;
&lt;li&gt;想快速验证一个 SQL 查询逻辑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;访问 &lt;a class="link" href="https://shell.duckdb.org" target="_blank" rel="noopener"
 &gt;shell.duckdb.org&lt;/a&gt;，三秒钟开始你的数据分析。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;本文基于 DuckDB Web Shell v1.5.2（Variegata）版本编写。DuckDB 是开源的嵌入式 OLAP 数据库，在线 Shell 是其社区贡献的 WebAssembly 移植项目。&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>