Over a million developers have joined DZone.

Extract Tables From Mysqldump File Using Enumerable#slice_before

·
More info in my blog post Exploring Latest ruby-lib Additions


if ARGV.size < 1
  puts "Use like mysqldump database_name | ./#{ $PROGRAM_NAME } table_name[s]"
  exit(0)
end

# Dump for each table in standard mysqldump output is started with the line like:
#
#     -- Table structure for table `access_rights`
#
# Use +Enumerable#slice_before+ to slice the whole dump into sections per table
# and then select only sections for the tables we are interested in.

# Create regexp which will match any of the passed table names quoted with backticks
quoted_table_names = /`#{ ARGV.join("|") }`/

table_dump = STDIN.slice_before(/\A-- Table structure for table/).select do |table_section|
  table_section.first =~ quoted_table_names 
end.join

print(table_dump)

Topics:

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

SEE AN EXAMPLE
Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.
Subscribe

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}