---
name: "Catmandu::Importer::SRU"
section: "3pm"
platform: "linux"
package: "libcatmandu-sru-perl"
version: "0.43.0-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Catmandu::Importer::SRU"
---

# Catmandu::Importer::SRU(3pm)

Package that imports SRU data

## NAME

Catmandu::Importer::SRU - Package that imports SRU data

## SYNOPSIS

```
  use Catmandu::Importer::SRU;
  my %attrs = (
    base => 'http://www.unicat.be/sru',
    query => '(isbn=0855275103 or isbn=3110035170 or isbn=9010017362 or isbn=9014026188)',
    recordSchema => 'marcxml',
    parser => 'marcxml'
  );
  my $importer = Catmandu::Importer::SRU->new(%attrs);
  my $count = $importer->each(sub {
        my $schema   = $record->{recordSchema};
        my $packing  = $record->{recordPacking};
        my $position = $record->{recordPosition};
        my $data     = $record->{recordData};
    # ...
  });
  # Using Catmandu::Importer::SRU::Package::marcxml, included in this release
  my $importer = Catmandu::Importer::SRU->new(
    base => 'http://www.unicat.be/sru',
    query => '(isbn=0855275103 or isbn=3110035170 or isbn=9010017362 or isbn=9014026188)',
    recordSchema => 'marcxml' ,
    parser => 'marcxml' ,
  );
  # Using a homemade parser
  my $importer = Catmandu::Importer::SRU->new(
    base => 'http://www.unicat.be/sru',
    query => '(isbn=0855275103 or isbn=3110035170 or isbn=9010017362 or isbn=9014026188)',
    recordSchema => 'marcxml' ,
    parser => MyParser->new , # or parser => '+MyParser'
  );
```

## DESCRIPTION

This Catmandu::Importer imports records via SRU.

SRU diagnostics are emitted as warnings except for parser set to `"meta"`.

## CONFIGURATION

- base

  Base URL of the SRU server (required)

- query

  CQL query (required)

- limit

  Number of records to fetch in one batch, set to `10` by default. This is translated to SRU request parameter `"maximumRecords"`.

  Records are fetched in multiple batches of this size or less.

- total

  Total number of records this importer may return.

  Not set by default

- recordSchema

  Set to `"dc"` by default

- sortkeys

  Optional sorting

- operation

  Set to `"searchRetrieve"` by default

- version

  Set to `1.1` by default

- userAgent

  HTTP user agent, set to `"Mozilla/5.0"` by default.

- http\_client

  Instance of HTTP::Tiny or compatible class to fetch URLs with.

- parser

  Controls how records are parsed before importing. The following options are possible:

  - •

    Instance of a Perl package that implements a `"parse"` subroutine. See the default value `"Catmandu::Importer::SRU::Parser"` for an example.

  - •

    Name of a Perl package that implements a `"parse"` subroutine. The name must be prepended by `"+"` or it prefixed with `"Catmandu::Importer::SRU::Parser::"`. For instance `"marcxml"` will create a `"Catmandu::Importer::SRU::Parser::marcxml"`.

  - •

    Function reference that gets passed the unparsed record.

## METHODS

All methods of Catmandu::Importer and by this Catmandu::Iterable are inherited. In addition the following methods are provided:

### url

Return the current SRU request URL (useful for debugging).

## SEE ALSO

Catmandu::Importer, Catmandu::Iterable, \<http://www.loc.gov/standards/sru/\>
