The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Acrux::DBI::Dump - Working with SQL dumps

SYNOPSIS

    use Acrux::DBI::Dump;

    my $dump = Acrux::DBI::Dump->new(
        dbi => $dbi
    );

    $dump->from_file('/tmp/test.sql')->poke;

DESCRIPTION

This class is used by Acrux::DBI to allow database schemas import. A dump file is just a collection of sql blocks, with one or more statements, separated by comments of the form -- #NAME or -- # NAME

  -- #foo
  CREATE TABLE `pets` (`pet` TEXT);
  INSERT INTO `pets` VALUES ('cat');
  INSERT INTO `pets` VALUES ('dog');
  delimiter //
  CREATE PROCEDURE `test`()
  BEGIN
    SELECT `pet` FROM `pets`;
  END
  //

  -- #bar
  DROP TABLE `pets`;
  DROP PROCEDURE `test`;

  -- #baz (...you can comment freely here...)
  -- ...and here...
  CREATE TABLE `stuff` (`whatever` INT);

  -- #main
  DROP TABLE `stuff`;

This idea is to let you import SQL dumps step by step by its names

ATTRIBUTES

This class implements the following attributes

dbi

    $dump = $dump->dbi($dbi);
    my $dbi = $dump->dbi;

The object these processing belong to

name

    my $name = $dump->name;
    $dump = $dump->name('foo');

Name for this dump, defaults to schema

METHODS

This class implements all methods from Mojo::Base and implements the following new ones

from_data

    $dump = $dump->from_data;
    $dump = $dump->from_data('main');
    $dump = $dump->from_data('main', 'file_name');

Extract dump data from a file in the DATA section of a class with "data_section" in Mojo::Loader, defaults to using the caller class and "name".

  __DATA__
  @@ schema

  -- # up
  CREATE TABLE `pets` (`pet` TEXT);
  INSERT INTO `pets` VALUES ('cat');
  INSERT INTO `pets` VALUES ('dog');

  -- # down
  DROP TABLE `pets`

from_file

    $dump = $dump->from_file('/tmp/schema.sql');

Read dump data from a file

from_string

    $dump = $dump->from_string('
      -- # up
      CREATE TABLE `pets` (`pet` TEXT);

      -- # down
      DROP TABLE `pets`
    ');

Read dump data from string

peek

    my $sqls = $dump->peek; # 'main'
    my $sqls = $dump->peek('foo');
    my @sqls = $dump->peek('foo');

This method returns an array/arrayref of SQL statements stored at a specified dump location by tag-name. By default will be used the main tag

poke

    $dump = $dump->poke; # 'main'
    $dump = $dump->poke('foo');

Import named data-block of SQL dump to database by tag-name. By default will be used the main tag

HISTORY

See Changes file

TO DO

See TODO file

SEE ALSO

Acrux::DBI, Mojo::mysql, Mojo::Pg

AUTHOR

Serż Minus (Sergey Lepenkov) https://www.serzik.com <abalama@cpan.org>

COPYRIGHT

Copyright (C) 1998-2024 D&D Corporation. All Rights Reserved

LICENSE

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See LICENSE file and https://dev.perl.org/licenses/