0

我有一个读取 CSV 文件并将其内容存储到数据库中的代码。该代码定期运行,它应该只读取新添加的文件。我想在阅读后在每个文件的第一行添加一个标志,但这需要一个一个地加载所有文件并检查它们的第一行以确定应该读取哪个文件。有没有更好的主意?

4

7 回答 7

1

同一目录中的索引文件,其中包含读取文件的列表,

这样你只需要阅读那个文件来决定

于 2012-05-16T14:51:44.473 回答
0

有一种更好的方法:将您处理的所有文件(名称)存储在数据库表中,并使用该表来决定是否处理文件。

于 2012-05-16T14:51:32.487 回答
0

不太了解您的情况,但是您能否询问数据库存储了哪些文件,然后只处理尚未存储的文件?或者您可以在下次运行代码时将已处理文件的列表存储在内存中?

于 2012-05-16T14:52:30.583 回答
0

删除读过的文件,没有办法混淆

于 2012-05-16T14:56:04.440 回答
0

我的两个解决方案:

  1. 将处理后的文件复制到另一个目录。
  2. 使用文件的哈希代码(冷名称)创建一个索引文件,您可以在其中检查文件是否已处理。
于 2012-05-16T14:56:29.973 回答
0

如果您使用的是 Windows 文件系统(FAT、NTFS),则有一个名为“存档”的文件属性用于此目的。对文件的任何更改都会导致它被设置,一旦将其添加到数据库中,您就可以清除它。

对于跨平台的目的,最好的选择是跟踪在数据库中查看了哪些文件(以及它们的最后修改日期),然后您可以在查看目录列表时进行检查,而无需打开每个文件。

于 2012-05-16T14:57:59.307 回答
0

尽量不要篡改这些文件。那是个坏主意。尝试设置文件的某些属性以指示其已处理。因此,您可以快速区分要读取/处理的文件。

于 2012-05-16T15:02:56.487 回答