Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在4000000行CSV文件中编辑一列中的值_Excel_Csv - Fatal编程技术网

Excel 在4000000行CSV文件中编辑一列中的值

Excel 在4000000行CSV文件中编辑一列中的值,excel,csv,Excel,Csv,我有一个CSV文件,我正在尝试编辑,以添加一个数字ID类型列,其中包含从1到大约4000000的唯一整数。有些字段已经有了ID值,所以我希望我可以对它们进行排序,然后从最大值+1开始填充。但是,由于该文件的大小,我无法在Excel中打开该文件进行编辑(我只能看到最大1048000行或任何行)。有没有一个简单的方法可以做到这一点?我不熟悉编码,所以我希望有一种方法可以手动完成,类似于Excel的fill series功能 谢谢 -此外,我知道有线程如何编辑一个大的CSV文件,但我希望得到帮助,如何

我有一个CSV文件,我正在尝试编辑,以添加一个数字ID类型列,其中包含从1到大约4000000的唯一整数。有些字段已经有了ID值,所以我希望我可以对它们进行排序,然后从最大值+1开始填充。但是,由于该文件的大小,我无法在Excel中打开该文件进行编辑(我只能看到最大1048000行或任何行)。有没有一个简单的方法可以做到这一点?我不熟悉编码,所以我希望有一种方法可以手动完成,类似于Excel的fill series功能

谢谢

-此外,我知道有线程如何编辑一个大的CSV文件,但我希望得到帮助,如何编辑这个特定的功能。谢谢

-我希望基本上根据idnumber对行进行排序,然后向没有该ID值的行添加唯一ID

单向,使用记事本++和名为:

  • 在记事本中加载CSV++

  • 从数据中选择a+1、b、c

  • 点击“开始”

  • 当以这样的文件开始时:

    a,b,c
    1,2,3
    4,5,6
    7,8,9
    
    
    SQL Plugin 1.0.1025
    Query         : select a+1,b,c from data
    Sourcefile    : abc.csv
    Delimiter     : ,
    Number of hits: 3
    ===================================================================================
    Query result:
    2,2,3
    5,5,6
    8,8,9
    
    
    之后的结果如下所示:

    a,b,c
    1,2,3
    4,5,6
    7,8,9
    
    
    SQL Plugin 1.0.1025
    Query         : select a+1,b,c from data
    Sourcefile    : abc.csv
    Delimiter     : ,
    Number of hits: 3
    ===================================================================================
    Query result:
    2,2,3
    5,5,6
    8,8,9
    
    
    或者,换句话说,第一列增加1

    第二个解决方案,使用,下载自:

    (g) awk id一种逐行读取文件的工具。然后可通过
    $0
    访问该行,并使用分隔符通过
    $1、$2、$3、
    访问该行中的零件

    在我的示例中(
    FS=OFS=\”,\”;
    )的
    BEGIN
    部分设置了此分隔符,每个输入文件只执行一次。不要被
    \“
    弄糊涂。这是因为脚本位于双引号之间,并且变量(如
    OFS
    )也使用双引号设置,因此需要像
    \”
    一样转义

    getline;打印$0时,请注意CSV中通常包含列名的第一行

    然后,对于每一行,这段代码
    print$1+1、$2、$3
    将增加第一列,并打印第二列和第三列

    要扩展第二个示例,请执行以下操作:

    gawk  "BEGIN{ FS=OFS=\",\"; getline; print $0 }{ print ($1<5?$1+1:$1),$2,$3 }" abc.csv
    
    • a=42
      为需要更新的列值设置初始值(您需要将其更改为正确的值)

    • 当第四列等于0时,
      if($4+0==0){a++}
      将增加
      a
      的值(
      $4+0
      用于将像
      这样的空值转换为数值0)


    您能否展示您的CSV样本(3行或4行),并将其添加到问题中?(然后我可能会在
    awk
    中想出一个解决方案,正如@Luuk所说,如果你能显示一两行你的CSV文件,这将是非常有用的。主要是因为CSV不是固定格式。分隔符、引号和行尾之间有很多变体。如果你不能,在awk部分中有几个有用的答案。嘿!I u更新了该文件的屏幕截图。谢谢!请看我的答案,我创建了一个简单的CSV示例,以演示如何完成…谢谢你的答案。有没有一种方法可以在不更改现有ID的ID值的情况下完成此操作?添加了一段有条件地更新列的代码。我知道这将是对(g)的一个深入学习awk,但此链接可以帮助您: