Exporting Table Contents or Definitions in SQL Format

Problem

You want to export tables or databases as SQL statements to make them easier to import later.

Solution

Use the mysqldump program without the --tab option.

Discussion

As discussed in Exporting Tables as Text Files, mysqldump causes the MySQL server to write tables as text datafiles on the server host when it’s invoked with the --tab option. If you omit the --tab , the server formats the table rows as the INSERT statements and returns them to mysqldump, which writes the output on the client host. The output also can include the CREATE TABLE statement for each table. This provides a convenient form of output that you can capture in a file and use later to recreate a table or tables. It’s common to use such dump files as backups or for copying tables to another MySQL server. This section discusses how to save dump output in a file; Copying Tables or Databases to Another Server shows how to send it directly to another server over the network.

To export a table in SQL format to a file, use a command like this:

%mysqldump cookbook states > states.txt

That creates an output file states.txt that contains both the CREATE TABLE statement and a set of INSERT statements:

-- MySQL dump 10.10 -- -- Host: localhost Database: cookbook -- ------------------------------------------------------ -- Server version 5.0.27-log -- -- Table structure for table `states` -- CREATE TABLE `states` ( `name` varchar(30) NOT NULL, `abbrev` char(2) NOT NULL, ...

Get MySQL Cookbook, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.