Skip to main content

data.GetCSV

Instead, use transform.Unmarshal with a global, page, or remote resource.

See the remote data example.

Given the following directory structure:

my-project/
└── other-files/
└── pets.csv

Access the data with either of the following:

{{ $data := getCSV "," "other-files/pets.csv" }}
{{ $data := getCSV "," "other-files/" "pets.csv" }}

When working with local data, the file path is relative to the working directory.

You must not place CSV files in the project's data directory.

Access remote data with either of the following:

{{ $data := getCSV "," "https://example.org/pets.csv" }}
{{ $data := getCSV "," "https://example.org/" "pets.csv" }}

The resulting data structure is an array of arrays:

[
["name","type","breed","age"],
["Spot","dog","Collie","3"],
["Felix","cat","Malicious","7"]
]

Options​

Add headers to the request by providing an options map:

{{ $opts := dict "Authorization" "Bearer abcd" }}
{{ $data := getCSV "," "https://example.org/pets.csv" $opts }}

Add multiple headers using a slice:

{{ $opts := dict "X-List" (slice "a" "b" "c") }}
{{ $data := getCSV "," "https://example.org/pets.csv" $opts }}

Global resource alternative​

Consider using the resources.Get function with transform.Unmarshal when accessing a global resource.

my-project/
└── assets/
└── data/
└── pets.csv
{{ $data := dict }}
{{ $p := "data/pets.csv" }}
{{ with resources.Get $p }}
{{ $opts := dict "delimiter" "," }}
{{ $data = . | transform.Unmarshal $opts }}
{{ else }}
{{ errorf "Unable to get resource %q" $p }}
{{ end }}

Page resource alternative​

Consider using the Resources.Get method with transform.Unmarshal when accessing a page resource.

my-project/
└── content/
└── posts/
└── my-pets/
├── index.md
└── pets.csv
{{ $data := dict }}
{{ $p := "pets.csv" }}
{{ with .Resources.Get $p }}
{{ $opts := dict "delimiter" "," }}
{{ $data = . | transform.Unmarshal $opts }}
{{ else }}
{{ errorf "Unable to get resource %q" $p }}
{{ end }}

Remote resource alternative​

Consider using the resources.GetRemote function with transform.Unmarshal when accessing a remote resource to improve error handling and cache control.

{{ $data := dict }}
{{ $u := "https://example.org/pets.csv" }}
{{ with resources.GetRemote $u }}
{{ with .Err }}
{{ errorf "%s" . }}
{{ else }}
{{ $opts := dict "delimiter" "," }}
{{ $data = . | transform.Unmarshal $opts }}
{{ end }}
{{ else }}
{{ errorf "Unable to get remote resource %q" $u }}
{{ end }}