Header 的产品 CSV 文件

Product CSV file with Header

是否可以从 impex 脚本中让 header 值不显示为注释?

我的意思是,我最终的 CSV 不是这样的:

# product_id|name|product_url
YG3243H|My Product|/products/my-product
...

看起来像这样:

product_id|name|product_url
YG3243H|My Product|/products/my-product
...

这将是一份常规工作,所以我真的想避免做任何 post-processing 事情。 这可能吗?

是的,你可以!使用更可定制的 includeExternalData method of ImpexReader. You can also use it with a CSVReader

对于这两种解决方案,您都可以设置 linesToSkip 参数。你可以将它设置为 1 假设你的 header 在第一行。

如果第一列包含数据,请不要忘记将 columnOffset 设置为 -1,因为 impex 通常从第 0 列开始,因此数据通常从第 1 列开始。

您可能还想将 delimiter 参数设置为 |,因为默认值为 ;


导入

使用 CSVReader

INSERT_UPDATE Product;code[unique=true];...
"#% CSVReader reader = new CSVReader( ImpExManager.class.getResourceAsStream(""myDataFile.csv""), ""utf-8"" );"
"#% impex.includeExternalData( reader, 1, -1 );"

仅限 ImpexReader

INSERT_UPDATE Product;code[unique=true];...
"#% impex.includeExternalData(ImpExManager.class.getResourceAsStream(""myDataFile.csv""), ""utf-8"", ''|'', 1, -1 );"

导出

你不能 "uncomment" header 但你可以跳过它。

"#% impex.setTargetFile( ""file.csv"", false, 1, -1 );"

如果需要,您也可以从 Java 执行此操作,请检查 Export API

false 表示 header NOT 作为注释写入目标数据文件的第一行

有关详细信息,请查看 ImpEx API