2017-01-10 9 views
0

Я использую Anypoint Studio 6.1 с Mule 3.8.1, а в компоненте Transform Message у меня есть входной CSV-файл, который имеет имена полей на 1-й строке и типы данных, которые были зарегистрированы во второй строке. Я хочу начать обработку записей из строки 3 и далее, но не могу настроить конфигурацию Reader, чтобы пропустить вторую строку, содержащую типы данных.Как проигнорировать первые две строки файла CSV в Dataweave?

Есть ли способ, которым я могу это сделать, чтобы 1-я строка использовалась для имен полей, вторая строка игнорируется, а 3-я строка - это записи, которые обрабатываются?

Тест CSV:

Product,Price 
string,decimal(10,2) 
phone,99 
tv,499 

XML поток:

<?xml version="1.0" encoding="UTF-8"?> 

<mule xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" 
    xmlns:spring="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd"> 
    <flow name="csvreaderFlow"> 
     <dw:transform-message metadata:id="08c0a5d4-9d7d-44ad-b72b-bac83ab6b6c1" doc:name="Transform Message"> 
      <dw:input-payload doc:sample="sample_data\list_csv.csv" mimeType="application/csv"> 
       <dw:reader-property name="bodyStartLineNumber" value="2"/> 
      </dw:input-payload> 
      <dw:set-payload><![CDATA[%dw 1.0 
%output application/json 
--- 
payload map ((payload01 , indexOfPayload01) -> { 
    products: payload01.Product 
})]]></dw:set-payload> 
     </dw:transform-message> 
    </flow> 
</mule> 

Даже если я увеличить стартовую линию тела число до 10, он все еще показывает 2 линии и 2 записи обрабатывать. Я думал, что это вызовет ошибку.

enter image description here

enter image description here

Благодаря

+0

Создать копию CSV и удалите строки не требуется. –

ответ

1

В конфигурации считывателя для CSV на Dataweave, у них есть параметр "bodyStartLineNumber" (установить, что '3' в вашем случае). Дайте мне знать, если у вас есть вопросы,

Вот шаги, которые необходимо соблюдать на Dataweave,

1. Right click on the "Payload" label (left panel). 
2. Click on the "Reader Configuration" option. 
3. GUI opens with multiple options to be set. 
4. Configure the "Body Start Line Number" 
+0

Я добавил XML и test csv, который я использую. Я хочу использовать 1-ю строку в качестве заголовка, игнорировать вторую строку, а затем телефон и тв будут записывать. Я изменил «номер строки запуска тела» на 2, но я все еще получаю 2-ю строку, показанную в Preview – user3165854

+0

. Неужели вы попробовали установить его на 3? –

+0

Я пробовал это в 3 и даже увеличил его до 10, и я думал, что получил бы исключение из-за исключения, потому что есть только 3 записи – user3165854