2017 © Pedro Peláez
 

library csv-seeder

Allows seeding of the database with CSV files

image

flynsarmy/csv-seeder

Allows seeding of the database with CSV files

  • Tuesday, October 31, 2017
  • by flynsarmy
  • Repository
  • 8 Watchers
  • 121 Stars
  • 70,600 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 39 Forks
  • 6 Open issues
  • 8 Versions
  • 14 % Grown

The README.md

CSV Seeder

Latest Version on Packagist Software License Build Status Quality Score Total Downloads, (*1)

Seed your database with CSV files

This package allows CSV based seeds., (*2)

Installation

Require this package in your composer.json and run composer update (or run composer require flynsarmy/csv-seeder:2.* directly):, (*3)

For PHP 7.4+, (*4)

"flynsarmy/csv-seeder": "2.0.*"

For older PHP versions, (*5)

"flynsarmy/csv-seeder": "1.*"

Usage

Your CSV's header row should match the DB columns you wish to import. IE to import id and name columns, your CSV should look like:, (*6)

id,name
1,Foo
2,Bar

Seed classes must extend Flynsarmy\CsvSeeder\CsvSeeder, they must define the destination database table and CSV file path, and finally they must call parent::run() like so:, (*7)

use Flynsarmy\CsvSeeder\CsvSeeder;

class StopsTableSeeder extends CsvSeeder {

    public function __construct()
    {
        $this->table = 'your_table';
        $this->filename = base_path().'/database/seeds/csvs/your_csv.csv';
    }

    public function run()
    {
        // Recommended when importing larger CSVs
        DB::disableQueryLog();

        // Uncomment the below to wipe the table clean before populating
        DB::table($this->table)->truncate();

        parent::run();
    }
}

Drop your CSV into /database/seeds/csvs/your_csv.csv or whatever path you specify in your constructor above., (*8)

Configuration

In addition to setting the database table and CSV filename, the following configuration options are available. They can be set in your class constructor:, (*9)

  • connection (string '') Connection to use for inserts. Leave empty for default connection.
  • insert_chunk_size (int 500) An SQL insert statement will trigger every insert_chunk_size number of rows while reading the CSV
  • csv_delimiter (string ,) The CSV field delimiter.
  • hashable (array [password]) List of fields to be hashed before import, useful if you are importing users and need their passwords hashed. Uses Hash::make(). Note: This is EXTREMELY SLOW. If you have a lot of rows in your CSV your import will take quite a long time.
  • offset_rows (int 0) How many rows at the start of the CSV to ignore. Warning: If used, you probably want to set a mapping as your header row in the CSV will be skipped.
  • mapping (array []) Associative array of csvCol => dbCol. See examples section for details. If not specified, the first row (after offset) of the CSV will be used as the mapping.
  • should_trim (bool false) Whether to trim the data in each cell of the CSV during import.
  • timestamps (bool false) Whether or not to add created_at and updated_at columns on import.
    • created_at (string current time in ISO 8601 format) Only used if timestamps is true
    • updated_at (string current time in ISO 8601 format) Only used if timestamps is true

Examples

CSV with pipe delimited values:, (*10)

public function __construct()
{
    $this->table = 'users';
    $this->csv_delimiter = '|';
    $this->filename = base_path().'/database/seeds/csvs/your_csv.csv';
}

Specifying which CSV columns to import:, (*11)

public function __construct()
{
    $this->table = 'users';
    $this->csv_delimiter = '|';
    $this->filename = base_path().'/database/seeds/csvs/your_csv.csv';
    $this->mapping = [
        0 => 'first_name',
        1 => 'last_name',
        5 => 'age',
    ];
}

Trimming the whitespace from the imported data:, (*12)

public function __construct()
{
    $this->table = 'users';
    $this->csv_delimiter = '|';
    $this->filename = base_path().'/database/seeds/csvs/your_csv.csv';
    $this->mapping = [
        0 => 'first_name',
        1 => 'last_name',
        5 => 'age',
    ];
    $this->should_trim = true;
}

Skipping the CSV header row (Note: A mapping is required if this is done):, (*13)

public function __construct()
{
    $this->table = 'users';
    $this->csv_delimiter = '|';
    $this->filename = base_path().'/database/seeds/csvs/your_csv.csv';
    $this->offset_rows = 1;
    $this->mapping = [
        0 => 'first_name',
        1 => 'last_name',
        2 => 'password',
    ];
    $this->should_trim = true;
}

Specifying the DB connection to use:, (*14)

public function __construct()
{
    $this->table = 'users';
    $this->connection = 'my_connection';
    $this->filename = base_path().'/database/seeds/csvs/your_csv.csv';
}

Migration Guide

2.0

  • $seeder->hashable is now an array of columns rather than a single column name. Wrap your old string value in [].

License

CsvSeeder is open-sourced software licensed under the MIT license, (*15)

The Versions

31/10 2017

dev-master

9999999-dev

Allows seeding of the database with CSV files

  Sources   Download

MIT

The Requires

 

laravel csv seed seeding seeds

04/09 2015

v1.0.6

1.0.6.0

Allows seeding of the database with CSV files

  Sources   Download

MIT

The Requires

 

laravel csv seed seeding seeds

20/06 2015

v1.0.5

1.0.5.0

Allows seeding of the database with CSV files

  Sources   Download

MIT

The Requires

 

laravel csv seed seeding seeds

28/05 2015

v1.0.4

1.0.4.0

Allows seeding of the database with CSV files

  Sources   Download

MIT

The Requires

 

laravel csv seed seeding seeds

01/07 2014

v1.0.3

1.0.3.0

Allows seeding of the database with CSV files

  Sources   Download

MIT

The Requires

 

laravel csv seed seeding seeds

13/02 2014

v1.0.2

1.0.2.0

Allows seeding of the database with CSV files

  Sources   Download

MIT

The Requires

 

laravel csv seed seeding seeds

13/02 2014

v1.0.1

1.0.1.0

Allows seeding of the database with CSV files

  Sources   Download

MIT

The Requires

 

laravel csv seed seeding seeds

13/02 2014

v1.0

1.0.0.0

Allows seeding of the database with CSV files

  Sources   Download

MIT

The Requires

 

laravel csv seed seeding seeds