0

所以我正在使用这个CSVIMPORT 函数,并且我正在尝试导入一个如下所示的 CSV 文件:

    2014-6-06 08:03:19, 439105, 1053224, Front Entrance
    2014-6-06 09:43:21, 439105, 1696241, Main Exit
    2014-6-06 10:01:54, 1836139, 1593258, Back Archway
    2014-6-06 11:34:26, 845646, external, Exit 
    2014-6-06 04:45:13, 1464748, 439105, Side Exit

等等 948739 行。基本上,第 2 列和第 3 列代表人们的 ID 号,它描述了一个人在事件中对另一个人的呼叫(例如 439105 呼叫 1053224)。每当有人在活动之外呼叫某人时,他们的 ID 都会显示为“外部”。

我只需要导入第 2 列和第 3 列(例如 439105 和 1053224)。问题是我只能让我的代码在一个小的 csv 文件大小而不是一个大的文件上工作......根据这个问题,一个超过一百万行的 csv 文件工作。

根据文档:

[C1 C2 C3] = CSVIMPORT(fileName, 'columns', {'C1', 'C2', C3'}, ... ) 此表单分别返回输出变量 C1、C2 和 C3 中列的数据,列名称区分大小写,并且必须与文件中的列名完全匹配。在列模式下获取数据时,输出列的数量必须与要读取的列数匹配,或者必须为 1。在后一种情况下,列中的数据作为单个单元格矩阵返回。

[C1 C2 C3] = CSVIMPORT(fileName, 'columns', [1, 3, 4], ,'noHeader', true, ... ) 此表单分别返回输出变量 C1、C2 和 C3 中列的数据,当 'noHeader' 选项设置为 true 时,columns 参数必须包含列索引。

所以我用了这个:

[C2 C3] = csvimport('hugeCSV.csv','columns',2:3,'noHeader',true) 

使用较小的测试 csv 文件,打印出如下内容:

    C2 =

  439105
  439105
  439105
  439105
 1836139
 1464748
 1464748

  C3 = 

'1053224'
'1696241'
'580064'
'1464748'
'external'
'439105'
'1053224'

这就是我想要的。但是,当我使用 948739 行的实际文件执行此操作时,我只会得到一个数字列表,如下所示:

  439105
  439105
  439105
  439105
 1836139
 1464748
 1464748
 1464748
 1464748
  580064
  580064
  580064
  580064
 1053224

并且持续了很长一段时间......

那么调用 CSVIMPORT 时我做错了吗?我只是想不通...任何帮助将不胜感激,谢谢!

4

0 回答 0