如何在不打开文件的情况下将数据附加到文件?我需要每周将新数据附加到文件中。
有没有办法不用在 JMP 脚本中打开/加载文件就可以这样做?
dt = open("my.csv");
dt<< Concatenate(Data Table ("New data") , append to first table);
dt << Save("my.csv", Replace(1));
谢谢!
数据表脚本Re: 如何在不打开文件的情况下将数据附加到文件?@Dawn_Lun -- 如果 CSV 文件总是 <1E4 行,最好将其作为 JMP 表加载,在 JMP 中连接,然后将 JMP 表另存为 CSV。 (1E4 是一个猜测。 1E6 可能也不错。)
但是,如果 CSV 文件变得足够大,需要几秒钟才能打开它,您可能想尝试串联方法。 串联方法:将新的(微型)JMP 文件保存在磁盘上的一个新的微型 CSV 文件中(无标题)。 在微型 CSV 上使用 loadTextFile 获取文本字符串。 然后使用 SaveTextFile 作为@txnelson建议使用第三个参数模式(“追加”)将微小的文本 CSV 字符串连接到磁盘上更大的 CSV 文件。
串联的潜在问题是将来会破坏大的 CSV 文件。 如果小 CSV 文件更改列顺序,则大 CSV 文件会变得乱七八糟,但没有任何警告。
另一种方法:将所有小型日常 CSV 文件保存在一个目录中,当您需要将整个集合作为一个文件查看时,使用多文件导入打开它们。 如果标题匹配,MFI 将堆叠文件,并且 MFI 速度很快。 也许使用日期作为小型 CSV 文件名称的一部分。 将日期设为 YYYYMMDD 格式,以便排序。
如果此数据很重要并且此项目将运行数月,则您还需要进行定期备份。 MFI 方法意味着每个周期只有一个小的 CSV 文件要添加到备份中。
Re: 如何在不打开文件的情况下将数据附加到文件?如果您使用的是 JMP 表,我不知道无法打开文件并追加到文件中。这是我认为您可以使用 JMP 表获得的最接近结果。
names default to here(1);
new table("New Data",new column("name", character,set values({"BILLY","JIMMIE"})));
dt = open("$DOCUMENTS\Discussion Group\my.csv",private);
dt<< Concatenate(Data Table ("New data") , append to first table);
dt << Save("$DOCUMENTS\Discussion Group\my.csv", Replace(1));
close( dt, nosave );
但是,如果您编写 JSL 将数据表“New Table”转换为字符串,即逗号分隔值字符串,您可以使用
Save Text File(path, character string, mode("append");
它将附加到您的 .csv 文件而无需打开它