This post shows how you can load a CSV file into kdb and write a table out from kdb to a CSV file.
Reading a CSV file:
Let's say that you'd like to load a file containing comma-separated values into an in-memory table in kdb. For example, here's my CSV file, which contains country populations (source: Worldometers):
$ head -5 worldPopulation.csv region,country,population Africa,Algeria,40375954 Africa,Angola,25830958 Africa,Benin,11166658 Africa,Botswana,2303820
My file has got two string columns and one integer column.
I can load it into kdb using the Zero Colon function: (types; delimiter) 0: filehandle
q) data:("SSI";enlist",") 0: `$"/path/to/worldPopulation.csv"
// "SSI" creates 2 symbol columns and one integer column
// let's look at the column types
q) meta data
c | t f a
----------| -----
region | s
country | s
population| i
// check the data
q) 5#data
region country population
------------------------------------------
Africa Algeria 40375954
Africa Angola 25830958
Africa Benin 11166658
Africa Botswana 2303820
Africa Burkina Faso 18633725
// you can use * if you want string columns, instead of symbol ones
q) data:("**I";enlist",") 0: `$"/path/to/worldPopulation.csv"
q) meta data
c | t f a
----------| -----
region | C
country | C
population| i
q) 5#data
region country population
----------------------------------
"Africa" "Algeria" 40375954
"Africa" "Angola" 25830958
"Africa" "Benin" 11166658
"Africa" "Botswana" 2303820
"Africa" "Burkina Faso" 18633725
Writing a CSV file:
To save a table to a CSV file, you can use the command: filehandle 0: delimiter 0: table
// first, let's try printing out the csv data to console q) "," 0: data "region,country,population" "Africa,Algeria,40375954" "Africa,Angola,25830958" "Africa,Benin,11166658" "Africa,Botswana,2303820" // save it q)(`$"/tmp/out.csv") 0: "," 0: data `/tmp/out.csv
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.