| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > нужно сделать копию таблицы |
| Автор: Geser 20.1.2007, 14:04 |
| Есть таблица с данными. Нужно сделать ее полную копию. Как это можно сделать? Через SELECT INSERT не хотелось бы т.к. слишком много доп.манимуляций с бд. ЗЫ:таблиц много. |
| Автор: Akina 20.1.2007, 14:13 |
| Backup Table / Restore Table а быстрее всего mysqlhotcopy |
| Автор: Geser 20.1.2007, 14:20 |
| Забыл сказать - интересует только sql-запрос. Всякие тулзы не подходят т.к. будет на подобие предустановленного скрипта. |
| Автор: Akina 20.1.2007, 14:23 |
| Backup Table / Restore Table - это TSQL. mysqlhotcopy - это предустановленный в составе MySQL скрипт. |
| Автор: sergejzr 20.1.2007, 14:27 | ||
Правда индексы придётся самому ставить. Дa и не быстрее это первого варианта.. |
| Автор: Geser 20.1.2007, 14:31 |
| Akina, а mysqlhotcopy в php-скрипт запихнуть можно? Я же выше написал, что мне нужен чистый sql-запрос sergejzr, т.е.? |
| Автор: Rodman 20.1.2007, 14:34 | ||
|
| Автор: sergejzr 20.1.2007, 14:39 |
Данные скопируются, а индексы нет. |
| Автор: Geser 20.1.2007, 14:44 |
| sergejzr, уже вижу. Но не смотря на это, такой вариант более предпочтителен, чем тот что предложил Rodman. Индексы создавать руками не хотелось бы. |
| Автор: sergejzr 20.1.2007, 14:52 |
Если у тебя пхп, то сперва селектируй "SHOW CREATE TABLE" это тебе даст полностью запрос для создания. Заменишь там имя таблицы и выполнишь его. А потом "SELECT * INTO MyNewTable FROM MyTable", как предложил Rodman, или "INSERT INTO tab2 SELECT * FROM tab1" В любом случае это правильные варианты. По скорости не отличаются от работы с дампом |
| Автор: Geser 20.1.2007, 14:55 |
| Сенк, попробуем... А Rodman вариант не работает(ругается на имя новой таблицы, которая не создана). |
| Автор: Rodman 20.1.2007, 15:00 |
| ну так конечно ругаться будет... этот запрос не предусматривает создание таблицы, только выборку и добавление данных... |
| Автор: Geser 20.1.2007, 15:05 |
| Ну вот поэтому он мне и не подошел. |
| Автор: muzer 20.1.2007, 15:15 |
| Rodman, в очередной (на моей памяти четрвёртый) раз полный бред говорите. MySQL такого синтаксиса даже не поддерживает (http://dev.mysql.com/doc/refman/5.1/en/ansi-diff-select-into-table.html). У вас в голове какая-то каша. Geser, Самый быстрый способ, это конечно же, манипуляция с файлами, а не с помоющью запросов. Классический способ запросами: CREATE TABLE tablecopy LIKE table; ALTER TABLE tablecopy DISABLE KEYS; INSERT INTO tablecopy SELECT * FROM table; ALTER TABLE tablecopy ENABLE KEYS; |
| Автор: Rodman 20.1.2007, 15:44 |
| muzer, я не работаю на прямую только с СУБД... я обрабатываю данные программно и тем самым формирую запросы циклические или еще какие нить... Свои запросы, которые я предлагал я смогу реализовать из делфей.... вот и предложил основу... если хочешь я всех буду тебе направлять... чтоб у тебя голова не болела за меня... |
| Автор: muzer 20.1.2007, 15:57 |
| Rodman, какая нафиг разница как работать с базой данных, если предоженный вами синтаксис просто не поддерживается, т.е. он неверный, такой запрос в mysql не будет работать. И неважно из delphi вы с mysql соединятетесь или нет. Направлять мне никого не надо. Я просто не понимаю смысла давать советы, которые не работают. Может объясните? |
| Автор: sergejzr 20.1.2007, 16:01 |
Модератор: Обьясняйтесь по ПМ, пожалуйста! Здесь не место для разборок! |