背景:我正在尝试将 3GB csv 文本文件(20M 行 x 46 col)加载到 SQLite 表中。数据导入失败并出现错误:“当表需要 46 个值时,记录 3,493,675 只有 2 个字段”。我想知道该记录是否只有 2 个字段(已损坏)或其他地方是否有问题(我的怀疑)。
所以我尝试使用 gawk 查看“违规”记录:
gawk -F, "NF<46 {打印 FNR,$1,NF}"
但收到一条错误消息(在运行 Windows 2008 的服务器上,具有 8 个 procs,16GB RAM | 我没有管理员权限):
“grow_top_buffer: iop->buf: 无法分配 1,073,741,826 字节的内存(空间不足)”。
我用谷歌搜索了这个错误,看到了一些 2003 年关于错误的帖子,但没有得到解决方案。
所以,问题来了:我的 4GB RAM Win 7 笔记本电脑上有相同的数据文件,并且相同版本的 gawk 工作正常——它读取整个 20M 记录……并且文件中的所有 20M 记录都有表所需的 46 个字段。
我尝试了几种不同的 gawk 语句,但在服务器上都失败了——都在我的电脑上工作。
问题:为什么在Win服务器上使用gawk缓冲内存错误?
谢谢,彼得