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/