节点手册 · 读写

KNIME CSV Reader 读取 CSV 用法

IO → Read → CSV Reader

读 csv 和 txt。国内用它绕不开两件事:编码要设成 GBK,以及别让编码列的前导零被当成数字吃掉。

它解决什么问题

把纯文本的表格文件读成数据表。和 Excel Reader 的分工很直白:xlsx 用 Excel Reader,csv 和 txt 用它。同样支持文件夹模式批量读。

CSV 文件本身不记录自己是什么编码。这是它和 xlsx 最大的差别,xlsx 自带编码信息,csv 全靠读的人指定。国内从 Excel「另存为 CSV」出来的文件基本都是 GBK,而 KNIME 默认按 UTF-8 读,中文就散了。

它在流程里的位置

CSV Reader读进来
Missing Value补空值
GroupBy汇总

整条流程的第一个节点。这里把编码和列类型设对,后面能省掉一大半排查。

基本信息

英文原名CSV Reader
中文名称CSV 读取器(iModel 中文界面)
节点库位置IO → Read → CSV Reader
输入端口无必需端口。可选一个文件系统连接端口
输出端口1 个数据表
支持格式csv、txt,以及任何用固定分隔符的纯文本表格

配置项逐条

  • Encoding / Charset字符集

    国内文件先试 GBK,还有生僻字读不出就换 GB18030。从系统导出、明确说了是 UTF-8 的才保持默认。设错的表现是中文变成问号或一串符号,但节点是绿灯不报错。

  • Column delimiter列分隔符

    默认逗号。中文 Windows 环境下 Excel 导出的 csv 有时用分号,制表符分隔的 txt 要填 \t。读进来只有一列,多半就是这里没对上。

  • Quote character引号字符

    字段内容本身含逗号时,文件会用引号把它包起来。默认双引号,一般不用改。地址、备注这类长文本字段出错时看这一项。

  • Skip first lines跳过开头若干行

    文件开头有报表标题、导出时间、口径说明时,填要跳过的行数。跳完之后第一行才是表头。

  • Has column header首行是表头

    不勾的话列名会变成 Col0Col1,第一行数据也会被当成数据保留。系统直接导出的明细文件有时确实没有表头。

  • Limit rows for type detection类型推断扫描行数

    靠扫描前若干行猜列类型。脏值出现在扫描范围之外,执行时才炸。文件大且质量不稳时调大这个值,或者直接在类型页手工指定。

CSV Reader 配置对话框
字符集Encoding
UTF-8GBKGB18030ISO-8859-1 国内文件先试 GBK。设错不报错,只是中文变乱码。
列分隔符Column delimiter
,;\t| 读进来只有一列,先查这一项。
跳过开头行数Skip first lines
0文件顶上有标题和导出时间时填实际行数。
列类型Transformation / Type
自动推断,可逐列改写 身份证号、银行账号、部门编码这类列务必手工指定为文本,否则前导零会被吃掉。

三个常见坑

  1. 编码列的前导零消失了。007 被推断成数字,读进来变成 7;身份证号更惨 – 超过 15 位会变成科学计数法,末几位直接失真且不可逆。凡是「看起来像数字但实际是编号」的列,都要在类型设置里手工指定为文本。这是国内数据场景最常见也最要命的一个坑。
  2. 中文乱码。改字符集即可。展开讲的在报错排查那一组里有单独一篇,含 Excel 打开导出文件乱码的反向情况。
  3. 读进来只有一列,整行挤在一格里。分隔符没对上。用文本编辑器打开文件看一眼第一行是用什么分开的,比在这里挨个试快。

什么时候该换别的节点

情况换成
文件是 xlsx 或 xlsExcel Reader
每行结构不规整,不是标准表格Line Reader 先整行读进来,再自己拆
要把结果写成 csvCSV Writer,编码同样要设
数据在数据库里DB Connector 加 DB Query Reader

读出来的表不对劲

按这个顺序查:分隔符、字符集、跳过行数、列类型。四项里必有其一。

iModel 专属客服
网页直接对话,无需微信
4008568196 拨打此号码联系我们

微信扫码咨询

iModel 微信咨询二维码

使用微信扫描上方二维码