---
url: https://docs.laravel-excel.com/2.1/import/chunk.md
---
# Chunk importer

When dealing with big files, it's better to import the data in big chunks. You can enable this with `filter('chunk')`;
To import it into chunks you can use `chunk($size, $callback)` instead of the normal `get()`. The first parameter is the size of the chunk. The second parameter is a closure which will return the results.

```
Excel::filter('chunk')->load('file.csv')->chunk(250, function($results)
{
        foreach($results as $row)
        {
            // do stuff
        }
});
```

## ExcelFile class example:

When working with ExcelFile injections (in the constructor or as method injection), you can enable the chunk filter inside the ExcelFile class

```
class UserListImport extends \Maatwebsite\Excel\Files\ExcelFile {

    public function getFile()
    {
        return 'file.csv';
    }

    public function getFilters()
    {
        return [
            'chunk'
        ];
    }

}
```

Injected ExcelFile example:

```
public function importUserList(UserListImport $import)
{
    $import->chunk(250, function($results)
    {
        // do stuff
        // or return true if you want to stop importing.
    });
}
```

## Queued chunks

We automatically queue every chunk for you, if you have enabled the queue driver in your config.

If you want to by-pass the behaviour, you can pass `false` as the third parameter of `chunk($size, $callback, $shouldQueue)`.

A non-default job queue may be specified by passing its name as the third parameter of `chunk($size, $callback, $shouldQueue)`.
