[](
https://github.com/karupanerura/MySQL-Dump-Parser-XS/actions)
# NAME
MySQL::Dump::Parser::XS - mysqldump SQL parser
# SYNOPSIS
use MySQL::Dump::Parser::XS;
open my $fh, '<:encoding(utf-8)', 'backup.sql' or die $!;
my %rows;
my $parser = MySQL::Dump::Parser::XS->new;
while (my $line = <$fh>) {
my @rows = $parser->parse($line);
my $table = $parser->current_target_table();
push @{ $rows{$table} } => @rows if $table;
}
for my $table ($parser->tables()) {
my @columns = $parser->columns($table);
my $row = $rows{$table};
print "[$table] id:$row->{id}\n";
}
# DESCRIPTION
MySQL::Dump::Parser::XS is `mysqldump` parser written in C/XS.
This module provides schema/data loader from `mysqldump` output SQL directly. No need `mysqld`.
# METHODS
## CLASS METHODS
### `new()`
Creates a new parser instance.
This manages parsing states and table's meta information in the parsing context.
## INSTANCE METHODS
### `reset()`
Re-initialize parsing context.
### `parse($line)`
Parse a line of `mysqldump` output.
### `current_target_table()`
Get current target table name in the parsing context.
### `columns($table_name)`
Get column names as LIST for the table of `$table_name`.
This method can get columns from already parsed tables only.
### `tables()`
Get table names as LIST.
This method can get tables from already parsed tables only.
# FAQ
### How to get column details?
Some `mysqldump` output include poor table schema information only.
So if you just need rich table schema information, I suggest using [DBIx::Inspector](
https://metacpan.org/pod/DBIx::Inspector) to solve the problem.
# LICENSE
Copyright (C) karupanerura.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
# AUTHOR
karupanerura <
[email protected]>