我的目标是读取一个或多个共享通用格式的csv文件,并根据csv数据中的分区列写入单独的文件。请允许最后一列是分区,数据未排序,并且可以在多个文件中找到给定的分区。一个文件的示例:

如果这种方法闻起来像可怕的XY问题,我很乐意进行调整。

到目前为止我已经尝试过:

  • 读入数据集并遍历每行
  • 如果已经看到分区,请分离一个新的工作程序(它将包含一个文件/ csvwriter)。将行发送到chan []string
  • 由于每个工作程序都是文件编写器,因此只能在其输入通道上只接收一个分区的行。
  • 这显然不是还没有工作,因为我还不知道如何根据给定行上看到的分区值将行发送给正确的工作程序。

    我给每个工作程序分配了id string每个分区的值,但不知道如何选择要发送给该工作线程的对象,如果我应该为每个工作线程创建一个单独的chan []string并使用select发送到该通道,或者也许某个结构应该容纳每个工作线程

    TLDR;具有某种类型的池和路由功能。我不知道如何根据一些分类的string值有条件地将数据发送到给定的go例程或通道,其中唯一的数目可以是任意的,但可能不会超过24个唯一的分区值。

    在此,我要说明一下,我已经注意到类似问题的确会被否决,因此,如果您认为这有悖于建设性意见或不够充分而不能否决,请发表评论,为什么,这样我就可以避免重复冒犯。 pb>

    谢谢您的帮助!

    游乐场

    代码段:


    同步版本不能先执行并发魔术(请参见下面的并发版本)。

    https://play.golang.org/p/--iqZGzxCF

    和并发版本:

    https://play.golang.org/p/oBTPosy0yT

    玩得开心!