MARC ISO 转 CSV 转换器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_164f4c1f/marc-iso-to-excel。
技能介绍
图书馆或编目系统导出的MARC数据多为ISO 2709二进制格式的.iso文件。这类文件用文本编辑器打开通常是乱码,直接解析又常遇到三个痛点:百万条数据转换时内存溢出、生成的CSV在Excel里中文乱码、个别损坏记录导致整体失败。
核心能力与处理流程
技能核心是scripts/convert_marc.py,采用两阶段流式处理:
- Phase 1:快速扫描记录,统计总数并提取列名,不写盘,几乎不占内存。
- Phase 2:逐条读取-转换-写入,全程不累积
Record对象,内存占用恒定O(1),损坏记录自动跳过并在结束报告数量。
输出为UTF-8 with BOM CSV,Excel可直接打开且中文不乱码;列顺序按字段号001→8XX升序,已映射字段用中文列名(如正题名、ISBN),未映射字段保留原始标识符(如300$b),多子字段值用中文分号拼接。另支持三种模式:
- 完整转换单文件,不指定路径时生成同名CSV。
- 预览模式仅打印前N条记录,不写文件。
- 批量转换目录下所有
.iso文件。
适用边界与注意点
- 仅支持ISO 2709二进制格式,不支持MARCXML(
.xml)。 - 只想快速查看前几条记录时直接用预览模式,无需完整转换。
- 脚本无断点续传,中断后重跑会覆盖输出文件,超大文件建议先预览确认。
- 自定义字段映射需编辑
FIELD_MAP字典,未映射字段不会丢数据。 - 若
pymarc报TruncatedRecord,不要手动去除记录末尾的[0x1d][0x1e]字节,直接传原始字节即可。 - 文件大于1GB时自动启用mmap零拷贝模式,内存仍不足时分拆源文件分批转换。
使用场景
- 图书馆采编团队拿到几十万条 CIP 编目导出的 .iso 文件,需要转成 Excel 交给审核人员逐条核对。
- 出版社收到书商提供的 GBK 编码 MARC .iso 文件,需要转成不乱码的表格核对书目信息后再入库。
- 编目系统导出百万级记录,直接转换担心内存溢出,需要流式写出 CSV 供后续统计分析。
- 只想快速查看 .iso 文件前几条记录确认字段内容是否正确,不想立即执行完整转换。
适合人员
- 图书馆采编人员:需要把编目系统导出的 MARC .iso 转成 Excel,供审核与馆际数据交换使用。
- 出版社数据管理员:需要批量将 CIP 编目数据转换为 CSV,提供给发行渠道或电商平台导入。
- 书商或数据集成商的技术支持:需要处理客户提供的大批量 .iso 编目文件并解决 GBK 编码识别问题。
- 数据分析工程师:需要把百万级 MARC 记录转成 CSV 后进行统计分析和入库。