如何导出条件数据

时间:2018-02-23 14:46:18

标签: hybris impex

我需要导出一些模型的实例,但我并不想要它们。我只需要具有特定属性的那个。

我可以通过代码来做到这一点,我想知道如何使用Impex做到这一点?

2 个答案:

答案 0 :(得分:5)

您可以通过其他方式导出实例:

第1步:

转到HMC界面,选择脚本生成器tool System->Tools->Script Generator,然后生成ImpEx脚本模型,并选择要导出的实例类型脚本,如:

"#% impex.setTargetFile( ""Customer.csv"" );"  // 1. where to export
insert_update Customer;&Item;@password[translator=de.hybris.platform.impex.jalo.translators.UserPasswordTranslator];CN;CodeNaf(code);DN;Europe1PriceFactory_UDG(code,itemtype(code));Europe1PriceFactory_UPG(code,itemtype(code));Europe1PriceFactory_UTG(code,itemtype(code));accountOrigine(&Item);accountVerificationType;addresses(&Item);authentificationDate[dateformat=dd.MM.yyyy hh:mm:ss];authorizedToUnlockPages[allownull=true];birthDate[dateformat=dd.MM.yyyy hh:mm:ss];carts(code);codeAPE;codeRCS;codeSiret;company;companyType(code,itemtype(code));creationtime[forceWrite=true,dateformat=dd.MM.yyyy hh:mm:ss];customerID;dateOfBirth[dateformat=dd.MM.yyyy hh:mm:ss];defaultPaymentAddress(&Item);defaultPaymentInfo(&Item);defaultShipmentAddress(&Item);description;domain;emailAlias;encodedPassword;enseigne(code)[allownull=true];erosId;europe1Discounts(&Item);firstname;fraudStatus(code,itemtype(code));hmcLoginDisabled;interestAreaList(code,itemtype(code));isprofessionnel;lastLogin[dateformat=dd.MM.yyyy hh:mm:ss];lastname;ldapaccount[allownull=true];ldaplogin;ldapsearchbase;locationType(code,itemtype(code));loginDisabled[allownull=true];modifiedtime[dateformat=dd.MM.yyyy hh:mm:ss];name;nbChild;nbGodSon;orders(code,versionID);origin;originalUid;owner(&Item)[allownull=true];password;passwordAnswer;passwordEncoding;passwordQuestion;paymentInfos(&Item);previewCatalogVersions(catalog(id),version);profilePicture(catalogVersion(catalog(id),version),code);recevedDocs;sessionCurrency(isocode);sessionLanguage(isocode);subscriptionTelContact(&Item);title(code);token;type(code,itemtype(code));uid[unique=true,allownull=true];userprofile(&Item);verificationDate[dateformat=dd.MM.yyyy hh:mm:ss];verificationflag // 2. how to export
"#% impex.exportItems( ""Customer"" , false );" // 3. what to export

要为您寻找的内容添加更多亮点,我将重点关注第3行

#% impex.exportItems( ""Customer"" , false );" // 3. what to export

所以你可以用不同的方式使用 exportItems 方法:

  • exportItems 按项目集:

    public void exportItems( Collection<Item> items ) public void exportItems( String[] pklist )

这些方法导出给定项目,其中项目可以作为PK(字符串)列表传递或直接用作项目集合。

  • exportItems 按类型代码:

    public void exportItems( String typecode ) public void exportItems( String typecode, int count ) public void exportItems( String typecode, boolean inclSubTypes ) public void exportItems( String typecode, int count, boolean inclSubTypes )

  • FlexibleSearch的
  • exportItems

    public void exportItemsFlexibleSearch( String query ) public void exportItemsFlexibleSearch( String query, Map values, List resultClasses, final boolean failOnUnknownFields, final boolean dontNeedTotal, int start, int count )
    public void exportItemsFlexibleSearch( String query, int count )

注意:默认情况下,Exporter API会使用搜索结果的分页。因此,要获得准确的结果,您的FlexibleSearch查询必须包含ORDER BY子句示例:

impex.exportItemsFlexibleSearch(""select {PK} from {Customer} where {uid}='anonymous' ORDER BY {pk}"")

如果您有权访问help.hybris检查:

如果您只能访问wiki:

第2步

转到HAC界面ImpEx Export,然后输入您的脚本并导出您的项目。

答案 1 :(得分:4)

我可以从Backoffice生成导出模型 - &gt;工具 - &gt;生成脚本。

然后我可以添加灵活的搜索查询来过滤导出的结果:

# ---- Extension: core ---- Type: Customer ----
"#% impex.setTargetFile( ""Customer.csv"" );"
insert_update Customer;&Item;Europe1PriceFactory_UDG(code,itemtype(code));Europe1PriceFactory_UPG(code,itemtype(code));Europe1PriceFactory_UTG(code,itemtype(code));allowSubstitution[allownull=true];...
"#% impex.exportItemsFlexibleSearch(""select {PK} from {Customer} where {uid}='anonymous'"", Collections.EMPTY_MAP, Collections.singletonList( Item.class ), true, true, -1, -1  );"

Cf:Impex API有关impex.exportItems[FlexibleSearch]page的文档以获取更多示例