2015-03-17 2 views
1

Мы выпускаем новый продукт на основе нашего существующего продукта, для которого мы создали новую базу данных mysql с другой схемой.Экспорт таблицы из mysql, импорт в таблицу с другим именем

Теперь нам нужны некоторые таблицы из нашей предыдущей базы данных в новом db, но для целей проектирования имена таблиц в новом db отличаются друг от друга (но все поля идентичны). Если имена были одинаковыми, я мог бы экспортировать таблицу из предыдущего db и импортировать ее в новую.

Как я могу это сделать, имена таблиц различны?

+0

откройте дамп и замените имена таблиц. – Jens

ответ

0

Я не думаю, что вы можете сделать это прямо, однако, если вы не хотите, чтобы изменить файл дампа и изменить имена таблиц вы можете выполнить следующие шаги

  1. таблицы, которая должна быть импортированы в новый db, создайте копию той же таблицы с новым именем в старой db и скопируйте в нее данные.
  2. Экспортируйте каждую таблицу, а затем импортируйте их в новую БД.

Вот пример

mysql> select * from table1 ; 
+------+------+ 
| t1id | name | 
+------+------+ 
| 1 | aa | 
| 2 | cc | 
| 3 | dd | 
| 4 | ee | 
| 5 | ff | 
| 6 | bb | 
| 7 | gg | 
+------+------+ 
7 rows in set (0.00 sec) 

mysql> create table table1_copy like table1 ; 
Query OK, 0 rows affected (0.12 sec) 

mysql> insert into table1_copy select * from table1 ; 
Query OK, 7 rows affected (0.07 sec) 
Records: 7 Duplicates: 0 Warnings: 0 

mysql> select * from table1_copy ; 
+------+------+ 
| t1id | name | 
+------+------+ 
| 1 | aa | 
| 2 | cc | 
| 3 | dd | 
| 4 | ee | 
| 5 | ff | 
| 6 | bb | 
| 7 | gg | 
+------+------+ 
7 rows in set (0.00 sec) 

Затем вы можете экспортировать каждую таблицу

mysqldump -u username -p dbname table1_copy > table1_copy.sql

Импорт новую таблицу mysql -u username -p < table1_copy.sql

И, наконец, удалить временные таблицы созданный на старом db.

Или экспортируйте eveything и переименуйте таблицы.

1

Вы можете экспортировать и импортировать эти таблицы, а затем переименовать таблицу с этим:

RENAME TABLE tbl_name TO new_tbl_name 
    [, tbl_name2 TO new_tbl_name2] ... 

Посмотреть эту ссылку для получения более подробной информации: http://dev.mysql.com/doc/refman/5.0/en/rename-table.html

Затем вы можете переименовать столбцы так:

ALTER TABLE xyz CHANGE manufacurerid manufacturerid INT 

Как указано в этом документе StackOverflow: Error renaming a column in MySQL

0

Вы можете сделать это, как в MySQL,

create table new_name_new_table(select * from old_table_name); 

, который будет копировать все данные из old_table в новую таблицу с новым именем.

Смежные вопросы