Elektra
0.8.24
|
This plugin allows you to read and write CSV files within Elektra. It aims to be compatible with RFC 4180. Rows and columns are written in Elektra arrays (#0
, #1
,..). Using configuration you can give columns a name.
delimiter
Tells the plugin what delimiter is used in the file. The default delimiter is ,
and will be used if delimiter
is not set.
header
Tells the plugin to use the first line as a header if it's set to "colname". The columns will get the corresponding names. Skip the first line if it's set to "skip" or treat the first line as a record if it's set to "record". If header
is not set, or set to "record", the columns get named #0,#1,... (array key naming)
columns
If this key is set the plugin will yield an error for every file that doesn't have exactly the amount of columns as specified in columns
.
columns/names
Sets the column names. Only usable in combination with the columns
key. The number of subkeys must match the number of columns. Conflicts with usage of header
.
columns/index
specify which column should be used to index records instead of the record number.
/export/<column name>
only export column column name
. Configuration can be give multiple times for different columns to export.
First line should determine the headers:
kdb mount test.csv /csv csvstorage "delimiter=;,header=colname,columns=2,columns/names,columns/names/#0=col0Name,columns/names/#1=col1Name"
The example below shows how you can use this plugin to read and write CSV files.
`` <h1>Mount plugin to cascading namespace
/tests/csv`
sudo kdb mount config.csv /tests/csv csvstorage "header=colname,columns/names/#0=col0Name,columns/names/#1=col1Name"
printf 'band,album
' >> kdb file /tests/csv
printf 'Converge,All We Love We Leave Behind
' >> kdb file /tests/csv
printf 'mewithoutYou,Pale Horses
' >> kdb file /tests/csv
printf 'Kate Tempest,Everybody Down
' >> kdb file /tests/csv
kdb ls /tests/csv #> user/tests/csv/#0 #> user/tests/csv/#0/album #> user/tests/csv/#0/band #> user/tests/csv/#1 #> user/tests/csv/#1/album #> user/tests/csv/#1/band #> user/tests/csv/#2 #> user/tests/csv/#2/album #> user/tests/csv/#2/band #> user/tests/csv/#3 #> user/tests/csv/#3/album #> user/tests/csv/#3/band
kdb get /tests/csv/#0/band #> band kdb get /tests/csv/#0/album #> album
kdb get /tests/csv/#3/album #> Everybody Down kdb get /tests/csv/#3/band #> Kate Tempest
kdb set /tests/csv/#1/album 'You Fail Me'
kdb get /tests/csv/#1/album #> You Fail Me
kdb get user/tests/csv/#0 #> #1 kdb get user/tests/csv/#1 #> #1 kdb get user/tests/csv/#2 #> #1 kdb get user/tests/csv/#3 #> #1
kdb file /tests/csv | xargs cat #> album,band #> You Fail Me,Converge #> Pale Horses,mewithoutYou #> Everybody Down,Kate Tempest
kdb rm -r /tests/csv sudo kdb umount /tests/csv
directoryvalue
to cascading namespace /tests/csv
kdb mount config.csv /tests/csv csvstorage directoryvalue
printf 'Schindler’s List,1993,8.9
' >> kdb file /tests/csv
printf 'Léon: The Professional,1994,8.5
' >> kdb file /tests/csv
kdb ls /tests/csv #> user/tests/csv/#0 #> user/tests/csv/#0/#0 #> user/tests/csv/#0/#1 #> user/tests/csv/#0/#2 #> user/tests/csv/#1 #> user/tests/csv/#1/#0 #> user/tests/csv/#1/#1 #> user/tests/csv/#1/#2
kdb get user/tests/csv/#0/#0 #> Schindler’s List kdb get user/tests/csv/#1/#2 #> 8.5
kdb get user/tests/csv/#0 #> #2 kdb get user/tests/csv/#1 #> #2
kdb set user/tests/csv/#0 'Movie – Year – Rating' kdb set user/tests/csv/#1 'It’s a Me.'
kdb get user/tests/csv/#0 #> Movie – Year – Rating kdb get user/tests/csv/#1 #> It’s a Me.
kdb rm -r /tests/csv sudo kdb umount /tests/csv
kdb mount config.csv /tests/csv csvstorage "delimiter=;,header=colname,columns/index=IMDB"
printf 'IMDB;Title;Year
' >> kdb file /tests/csv
printf 'tt0108052;Schindler´s List;1993
' >> kdb file /tests/csv
printf 'tt0110413;Léon: The Professional;1994
' >> kdb file /tests/csv
kdb ls /tests/csv #> user/tests/csv/tt0108052 #> user/tests/csv/tt0108052/IMDB #> user/tests/csv/tt0108052/Title #> user/tests/csv/tt0108052/Year #> user/tests/csv/tt0110413 #> user/tests/csv/tt0110413/IMDB #> user/tests/csv/tt0110413/Title #> user/tests/csv/tt0110413/Year
kdb get /tests/csv/tt0108052/Title #> Schindler´s List
kdb rm -r /tests/csv sudo kdb umount /tests/csv
kdb mount config.csv /tests/csv csvstorage "delimiter=;,header=colname,columns/index=IMDB"
printf 'IMDB;Title;Year
' >> kdb file /tests/csv
printf 'tt0108052;Schindler´s List;1993
' >> kdb file /tests/csv
printf 'tt0110413;Léon: The Professional;1994
' >> kdb file /tests/csv
kdb export /tests/csv csvstorage -c "delimiter=;,header=colname,columns/index=IMDB,export=,export/IMDB=,export/Title=" #> IMDB;Title #> tt0108052;Schindler´s List #> tt0110413;Léon: The Professional
kdb export /tests/csv csvstorage -c "delimiter=;,header=colname,columns/index=IMDB,export=,export/IMDB=,export/Year=" #> IMDB;Year #> tt0108052;1993 #> tt0110413;1994
kdb rm -r /tests/csv sudo kdb umount /tests/csv
```
kdb import
without file)