跳到工具
ViewCSV
无需上传文件

下载 CSV 示例文件

orders.csv

15 行 · 8 列 · 订单数据,含前导零编号、空白价格、多余空格和一行重复记录

试试排序、筛选、清洗和转换:编号的前导零必须保留,重复行应被找出。

order_id,customer,city,product,quantity,unit_price,order_date,status
001041,磊 黄,北京,Coffee beans 1kg,7,139.12,2026-01-27,pending
001042,杰 徐,北京,Coffee beans 1kg,2,132.10,2026-02-14,shipped
001043,伟 孙,上海,Notebook A5,7,129.75,2026-03-22,pending
001044,敏 杨,上海,"Chair, ergonomic",1,122.25,2026-04-25,paid
001045,静 王,成都,Coffee beans 1kg,9,,2026-05-15,refunded

contacts.csv

6 行 · 7 列 · 联系人数据,含多行备注和带引号的逗号

专为“CSV 转 vCard”准备:表头会自动对应到联系人字段。

first_name,last_name,email,mobile,company,city,notes
艳,徐,contact1@example.test,13892109392,东方贸易,广州,
艳,陈,contact2@example.test,13871856534,东方贸易,南京,"Met at the trade fair
Prefers email"
娟,周,contact3@example.test,13812990770,星河软件,广州,
涛,李,contact4@example.test,13872858952,东方贸易,杭州,"VIP, call before 10:00"
洋,刘,contact5@example.test,13882114080,东方贸易,南京,

customers.csv

8 行 · 4 列 · 客户数据,编号为五位数

在“合并或关联 CSV 文件”中按 customer_id 与发票文件关联。

customer_id,name,country,segment
00301,静 陈,中国,business
00302,敏 李,中国,education
00303,涛 李,中国,business
00304,磊 吴,中国,business
00305,芳 黄,中国,retail

invoices.csv

10 行 · 4 列 · 引用客户编号的发票数据,部分编号重复

关联用的第二个文件;重复的客户编号可以展示一对多匹配是如何报告的。

customer_id,invoice_no,total,paid
00308,INV-2400,855.16,false
00307,INV-2401,862.27,true
00309,INV-2402,817.14,false
00309,INV-2403,797.76,false
00304,INV-2404,413.26,true

signups.csv

7 行 · 6 列 · 注册数据,含无效邮箱、不存在的日期、重复记录和空行

先用“CSV 校验”按规则检查,再用“清洗 CSV 数据”处理,比较两者各自发现的问题。

id,name,email,age,signup_date,plan
1," 伟 王",first@example.test,34,2026-01-04,pro
2,芳 李,not-an-email,thirty,2026-02-30,Pro
3,娜  张,third@example.test,,2026-03-11,free
3,娜  张,third@example.test,,2026-03-11,free
,,,,,

sales.csv

18 行 · 4 列 · 三个地区的月度营收

适合图表、分组和数据透视:月份 × 地区。

month,region,revenue,units
2026-01,北京,2665,41
2026-01,上海,892,14
2026-01,广州,1049,25
2026-02,北京,1805,55
2026-02,上海,3170,11

edge-cases.csv

5 行 · 4 列 · 解析器边界情况:引号、换行、制表符、表情符号、公式、长编号

检查程序是否原样保留所有值:0007、1.2300 和 20 位编号都必须保持不变。

id,label,note,amount
0007,"Comma, inside","He said ""yes""",1.2300
12345678901234567890,"Line
break","Ends with spaces  ",-0.5
003,Café · 東京 · Москва · مرحبا,=SUM(A1:A2),1e-3
004,,Tab	inside,
005,😀 emoji,"""quoted""",9007199254740993

prices-semicolon.csv

5 行 · 4 列 · 分号分隔、逗号作小数点的价格数据,常见于许多欧洲语言版 Excel 的保存结果

打开即可看到分隔符自动识别;可试着用逗号小数的数字进行筛选。

item_no;description;price;quantity
000201;Coffee beans 1 kg;12,90;2
000202;Desk lamp;34,50;3
000203;USB-C cable, 2 m;7,99;4
000204;Notebook A5;3,25;5
000205;青山科技有限公司;1.234,50;1

orders-100k.csv

10 万条订单,约 7 MB,在浏览器中生成

由固定种子值生成,每次下载内容都相同。可用来试用大文件处理。

这里有 7 个小型 CSV 文件,人物都是虚构的,邮箱地址使用 example.test,专门用来测试 CSV 工具。下面逐一说明每个文件的列、用途以及其中设置的“陷阱”,例如 001041 这类补零编号、引号内的逗号、转义引号、单元格内换行、空白价格和重复行。所有文件都是逗号分隔的 UTF-8 文本,带表头行,换行符为 CRLF。

文件及其列

orders.csv15 条订单:order_id、customer、city、product、quantity、unit_price、order_date、status。通用文件,适合测试排序、筛选、列映射和格式转换。
orders-updated.csvorders.csv 的后续版本,用于对比:订单 001044 的数量有变化,订单 001046 被删除,订单 001099 是新增的。
contacts.csv6 位联系人:first_name、last_name、email、mobile、company、city、notes。用于测试 vCard 等通讯录导出。
customers.csv8 位客户:customer_id、name、country、segment。关联合并时的左表。
invoices.csv10 张发票:customer_id、invoice_no、total、paid。关联合并时的右表;其中几张发票对应客户 00309,而 customers.csv 中没有这位客户。
signups.csv7 条故意弄乱的注册记录:id、name、email、age、signup_date、plan。用于测试数据清洗和校验。
sales.csv18 行长格式的月度销售数据:month、region、revenue、units,3 个地区各 6 个月。用于测试图表、数据透视和行列转置。

和大多数导出文件一样,列名都是简单的英文标识符。日期采用 ISO 8601 格式(2026-03-25),月份写作 2026-01,金额保留两位小数并使用小数点。

每个文件里的边界情况

  • orders.csv:每个 order_id 都补零到 6 位(001041 到 001054),把编号当数字读取的工具会丢掉前导零。商品 Monitor 27" 在文件中写作 "Monitor 27"""(转义引号),"Chair, ergonomic" 的引号里包含逗号。订单 001045 的 unit_price 为空,订单 001047 的客户名前后有空格,最后一行与订单 001043 完全重复。
  • contacts.csv:有一个 notes 单元格跨两行(Met at the trade fair / Prefers email),另一个包含逗号(VIP, call before 10:00)。大部分备注为空。手机号以 +1 555 开头。
  • customers.csv 和 invoices.csv:都以补零的 5 位 customer_id(如 00301)作为关联键,只有两边都保持文本格式才能匹配成功。客户 00308 有 3 张发票,有 4 位客户没有发票,00309 有发票却没有对应的客户行。
  • signups.csv:有的姓名开头带空格,有的末尾带空格,还有一个含两个连续空格;邮箱列里有 not-an-email 和 N/A;age 列里有 thirty 和空值;有不存在的日期 2026-02-30 和含义不明确的 11/03/2026;同一套餐有 pro 和 Pro 两种写法;另有一条完全重复的记录、一条全空的记录,并且缺少 id 为 4 的记录。
  • sales.csv:干净、全为数值的文件。revenue 和 units 都是整数,可作为对照组:工具如果在这里出错,就不是数据不规范造成的。

不同任务该用哪个文件

查看、排序和筛选在 CSV 在线查看、CSV 行排序 或 筛选 CSV 行 中使用 orders.csv。按 order_id 排序,检查补零编号的顺序是否正确。
格式转换测试转换功能时,可以把 orders.csv 分别导入 CSV 转 JSON、CSV 转 SQL 或 CSV 转 Excel,把联系人文件 contacts.csv 导入 CSV 转 vCard。转换后重点检查:编号 001041 是否原样保留,跨两行的备注是否仍是同一个值。
对比两个版本在 对比 CSV 文件 中比较 orders.csv 和 orders-updated.csv:应得到 1 行修改、1 行删除和 1 行新增。
关联合并打开 合并或关联 CSV 文件,以 customer_id 作为关键列,把客户文件 customers.csv 和发票文件 invoices.csv 关联起来。
清洗和校验在 清洗 CSV 数据 或 CSV 校验 中使用 signups.csv,看工具能报告或修复上面列出的哪些问题。
图表和重塑在 CSV 生成图表 中使用 sales.csv(按月份或地区统计收入),或用于 CSV 行列转置。

在会用到这些文件的工具页面上,点击 用示例试试 会直接载入对应的文件,打开自己的数据之前就能先看到工具的效果。

数据是真实的吗?

不是。人名由常见的名和姓随机组合而成,公司是虚构的,所有邮箱地址都使用 RFC 2606 保留的 .test 域名,英文版的电话号码使用 555 号段。城市名是真实地名,仅作标签使用。价格、数量和日期由固定的随机种子生成,所以每次生成的文件都完全相同。

文件内容会随界面语言变化:在其他语言的页面上,人名、城市、公司和电话格式会换成当地用户熟悉的样子,而列名、编号和边界情况保持不变。

需要其他文件时

这些文件故意做得很小,每一行都能用肉眼核对。如果需要成千上万行、其他类型的列或自定义列名,请使用 CSV 测试数据生成器:相同的种子和设置总是生成相同的文件,测试可以完全重现。

示例:一条容易读错的联系人记录是如何解析的

下面是 contacts.csv 前三条记录在文件中的原始写法,以及符合 RFC 4180 的解析器应返回的值。换行和逗号都留在 notes 值内部;最后一个空字段是空字符串,而不是缺少一列。

CSV
first_name,last_name,email,mobile,company,city,notes
Ava,Williams,contact1@example.test,+1 555-235-0351,Harbor Analytics,Atlanta,
Mary,Brown,contact2@example.test,+1 555-073-4622,Bluebird Labs,Chicago,"Met at the trade fair
Prefers email"
Olivia,Garcia,contact3@example.test,+1 555-982-2565,Northwind,Chicago,
解析后的记录(每条 7 个值)
[
  ["Ava", "Williams", "contact1@example.test", "+1 555-235-0351", "Harbor Analytics", "Atlanta", ""],
  ["Mary", "Brown", "contact2@example.test", "+1 555-073-4622", "Bluebird Labs", "Chicago", "Met at the trade fair\nPrefers email"],
  ["Olivia", "Garcia", "contact3@example.test", "+1 555-982-2565", "Northwind", "Chicago", ""]
]

常见问题

可以把这些文件用于自己的测试或教程吗?

文件中没有真实的人物或联系方式,可以放心用作测试数据。只是要注意,城市名是真实地名。

为什么编号以 0 开头?

因为真实的导出文件经常如此(订单号、邮政编码、商品编码),而这也是 CSV 工具最容易出错的地方。如果 001041 变成了 1041,说明工具把文本转换成了数字。

为什么 orders.csv 里有一行重复?

用来测试去重和对比。最后一条记录与订单 001043 完全相同,重复检查应当找到 1 行重复。

标准与参考资料