# CSV within CSV

**URL:** <https://discuss.elastic.co/t/csv-within-csv/25464>\
**Category:** Logstash\
**Created:** [July 13, 2015, 5:03pm UTC](https://discuss.elastic.co/t/csv-within-csv/25464 "2015-07-13T17:03:06Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Khoa\_Nguyen1](https://avatars.discourse-cdn.com/v4/letter/k/dec6dc/32.png) [@Khoa\_Nguyen1](https://discuss.elastic.co/u/Khoa_Nguyen1)\
**Post date:** [July 13, 2015, 5:03pm UTC](https://discuss.elastic.co/t/csv-within-csv/25464/1 "2015-07-13T17:03:06Z")

</div>

My CSV records have fields that are CSV themselves (with different delimiter). For example:

```
a,b,c,d1|d2|d3,e,f1|f2,g,h

```

How do I write a logstash configuration file to handle this?

Thanks

---

<div class="post-metadata">

**Author:** ![warkolm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/warkolm/32/39224_2.png) [@warkolm](https://discuss.elastic.co/u/warkolm)\
**Post date:** [July 13, 2015, 10:21pm UTC](https://discuss.elastic.co/t/csv-within-csv/25464/2 "2015-07-13T22:21:58Z")

</div>

[https://www.elastic.co/guide/en/logstash/current/plugins-filters-csv.html#plugins-filters-csv-separator](https://www.elastic.co/guide/en/logstash/current/plugins-filters-csv.html#plugins-filters-csv-separator) should help

---

<div class="post-metadata">

**Author:** ![juerkan](https://avatars.discourse-cdn.com/v4/letter/j/4491bb/32.png) [@juerkan](https://discuss.elastic.co/u/juerkan)\
**Post date:** [July 13, 2015, 10:52pm UTC](https://discuss.elastic.co/t/csv-within-csv/25464/3 "2015-07-13T22:52:20Z")

</div>

I think the question was: can i set a second separator in one CSV Input ?  
probably not,  
maybe with a second kv filter.......  
[https://www.elastic.co/guide/en/logstash/current/plugins-filters-kv.html](https://www.elastic.co/guide/en/logstash/current/plugins-filters-kv.html)  
have somebody other suggestions???

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [July 14, 2015, 5:59am UTC](https://discuss.elastic.co/t/csv-within-csv/25464/4 "2015-07-14T05:59:40Z")

</div>

The csv filter doesn't support nested CSV structures (for good reasons). Just use two csv filters in series.

---

<div class="post-metadata">

**Author:** ![Khoa\_Nguyen1](https://avatars.discourse-cdn.com/v4/letter/k/dec6dc/32.png) [@Khoa\_Nguyen1](https://discuss.elastic.co/u/Khoa_Nguyen1)\
**Post date:** [July 14, 2015, 1:58pm UTC](https://discuss.elastic.co/t/csv-within-csv/25464/5 "2015-07-14T13:58:26Z")

</div>

Thanks for all your inputs. Magnus, I can't figure out how to construct two CSV filters in series. Could you give me a hint?

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [July 14, 2015, 2:08pm UTC](https://discuss.elastic.co/t/csv-within-csv/25464/6 "2015-07-14T14:08:11Z")

</div>

Set the `source` parameter of the second csv filter to the name of the field produced by the first filter. Actually, in your case you have two columns (the first and the third) so you need three csv filters. Something like this (replace "..." with the desired field names, obviously):

```
csv {
  columns => ["one", "two", "three"]
  separator => "|"
}
csv {
  columns => [...]
  source => "one"
}
csv {
  columns => [...]
  source => "three"
}
```

---

<div class="post-metadata">

**Author:** ![Khoa\_Nguyen1](https://avatars.discourse-cdn.com/v4/letter/k/dec6dc/32.png) [@Khoa\_Nguyen1](https://discuss.elastic.co/u/Khoa_Nguyen1)\
**Post date:** [July 14, 2015, 2:13pm UTC](https://discuss.elastic.co/t/csv-within-csv/25464/7 "2015-07-14T14:13:45Z")

</div>

Thanks! Works great

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 5:34am UTC](https://discuss.elastic.co/t/csv-within-csv/25464/8 "2017-07-06T05:34:47Z")

</div>


