MySQL Tabelle klonen
-
Hallo Leute!
Gibt es eine moeglichkeit wie ich eine Tabelle 1:1 kopieren kann (also struktur und daten)?
egal was ich versuche, er uebernimmt mir nie die auto_increments, keys, indices, etc...momentan haben wir n PHP Script laufen, dass per 'show columns from foo' die felder ausliest und daraus die neue tabelle erstellt.
aber das gefaellt mir nicht. es muss doch in MySQL ne moeglichkeit geben eine tabelle zu klonen - schliesslich muss MySQL dafuer ja nur ein paar dateien kopieren...es reicht auch, wenn jemand weiss, wie man nur die struktur uebernehmen kann - dann macht man halt 2 queries, was auch nicht so schlimm ist.
-
Hi Shade,
hilft Dir das hier eventuell weiter?
Ist allerdings für die Kommandozeile.
MfGr,
mid
-
die seite geht bei mir irgendwie nicht...
naja, aber commandline hilft nur bedingt weiter
gibts denn echt keine moeglichkeit ein
create table new_tbl from old_tbl
zu machen??
-
Shade Of Mine schrieb:
die seite geht bei mir irgendwie nicht...
naja, aber commandline hilft nur bedingt weiter
4.8.6 mysqlhotcopy, Copying MySQL Databases and Tables
mysqlhotcopy is a Perl script that uses LOCK TABLES, FLUSH TABLES and cp or scp to quickly make a backup of a database. It's the fastest way to make a backup of the database or single tables, but it can only be run on the same machine where the database directories are. mysqlhotcopy works only on Unix, and it works only for MyISAM and ISAM tables.
mysqlhotcopy db_name [/path/to/new_directory]
mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory
mysqlhotcopy db_name./regex/
mysqlhotcopy supports the following options:
-?, --help
Display a help screen and exit
-u, --user=#
User for database login
-p, --password=#
Password to use when connecting to server
-P, --port=#
Port to use when connecting to local server
-S, --socket=#
Socket to use when connecting to local server
--allowold
Don't abort if target already exists (rename it _old)
--keepold
Don't delete previous (now renamed) target when done
--noindices
Don't include full index files in copy to make the backup smaller and faster The indexes can later be reconstructed with myisamchk -rq..
--method=#
Method for copy (cp or scp).
-q, --quiet
Be silent except for errors
--debug
Enable debug
-n, --dryrun
Report actions without doing them
--regexp=#
Copy all databases with names matching regexp
--suffix=#
Suffix for names of copied databases
--checkpoint=#
Insert checkpoint entry into specified db.table
--flushlog
Flush logs once all tables are locked.
--tmpdir=#
Temporary directory (instead of /tmp).You can use perldoc mysqlhotcopy to get more complete documentation for mysqlhotcopy.
mysqlhotcopy reads the groups [client] and [mysqlhotcopy] from the option files.
To be able to execute mysqlhotcopy you need write access to the backup directory, the SELECT privilege for the tables you are about to copy and the MySQL RELOAD privilege (to be able to execute FLUSH TABLES).
-
einfach die 3 Dateien kopieren.
Will man die ganze DB haben dann den ganzen Ordner kopieren.
Dann einmysqladmin refresh
-
Wenn die Tabelle nicht zu gross ist würdich mysqldump dem hotcopy vorziehen.
Ist einfach viel sicherer und wenn du nicht grad mehrere GB an Daten hast fällt das kaum auf das mysqldump etwas langsamer ist.Oder was auch geht ist ein backup mit phpmyadmin machen, find das funzt einwandfrei.
Mach damit immer die Backups von meinem Webserver, hatte noch nie Sorgen damit.