Самый простой способ скопировать таблицу из одной базы данных в другую?

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

Я знаю, что могу использовать

INSERT INTO database2.table2 SELECT * from database1.table1

Но здесь проблема заключается в том, что оба database1 и database2 находятся под разными пользователями MySQL. Таким образом, user1 может получить доступ только к database1, а user2 может получить доступ только к database2. Любая идея?

Ответ 1

Если у вас есть доступ к оболочке, вы можете использовать mysqldump для сброса содержимого database1.table1 и передать его на mysql на database2. Проблема здесь в том, что table1 все еще table1.

mysqldump --user=user1 --password=password1 database1 table1 \
| mysql --user=user2 --password=password2 database2

Возможно, вам нужно переименовать table1 в table2 с другим запросом. С другой стороны, вы можете использовать sed для изменения таблицы1 в таблицу2 между каналами.

mysqldump --user=user1 --password=password1 database1 table1 \
| sed -e 's/`table1`/`table2`/' \
| mysql --user=user2 --password=password2 database2

Если таблица2 уже существует, вы можете добавить параметры к первому mysqldump, который не позволяет создавать таблицы-create.

mysqldump --no-create-info --no-create-db --user=user1 --password=password1 database1 table1 \
| sed -e 's/`table1`/`table2`/' \
| mysql --user=user2 --password=password2 database2

Ответ 2

CREATE TABLE db1.table1 SELECT * FROM db2.table1

где db1 - место назначения, а db2 - источник

Ответ 3

Если вы используете PHPMyAdmin,, это может быть очень просто. Предположим, у вас есть следующие базы данных:

DB1 & DB2

В DB1 есть пользователи таблицы, которые вы хотите скопировать в DB2

В PHPMyAdmin откройте DB1, затем перейдите в таблицу users.

На этой странице щелкните вкладку "Операции" в правом верхнем углу. В разделе "Операции" найдите раздел Скопировать таблицу в (database.table):

& вы сделали!

Ответ 4

MySql Workbench: настоятельно рекомендуется

Database Migration Tool From MySql Workbench

Это легко справится с проблемами миграции. Вы можете перенести выбранные таблицы выбранных баз данных между MySql и SqlServer. Вы должны дать ему определенную попытку.

Ответ 5

Я использую Navicat для MySQL...

Это облегчает манипуляции с базой данных.

Вы просто выбираете обе базы данных в Navicat и затем используете.

 INSERT INTO Database2.Table1 SELECT * from Database1.Table1

Ответ 6

Используйте функцию экспорта и импорта MySql Workbench. Этапы:
 1. Выберите нужные значения

E.g. select * from table1; 
  1. Нажмите кнопку "Экспорт" и сохраните ее как CSV.
  2. создать новую таблицу, используя аналогичные столбцы, как первая

    E.g. create table table2 like table1; 
    
  3. выберите все из новой таблицы

    E.g. select * from table2;  
    
  4. Нажмите "Импорт" и выберите файл CSV, который вы экспортировали на шаге 2

Sample of the Export and Import buttons in MySql Workbench

Ответ 7

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

С 5.6.10 вы можете сделать

CREATE TABLE new_tbl LIKE orig_tbl;

См. Документацию здесь: https://dev.mysql.com/doc/refman/5.7/en/create-table-like.html

Ответ 8

Если ваши таблицы находятся на одном сервере mysql, вы можете запустить следующие

CREATE TABLE destination_db.my_table SELECT * FROM source_db.my_table;
ALTER TABLE destination_db.my_table ADD PRIMARY KEY (id); 
ALTER TABLE destination_db.my_table MODIFY COLUMN id INT AUTO_INCREMENT;

Ответ 9

Вот еще один простой способ:

  1. использовать DB1; показать создать таблицу TB1;
    • Скопируйте синтаксис здесь в буфер обмена, чтобы создать TB1 в DB2
  2. использовать DB2;
    • вставьте сюда синтаксис для создания таблицы TB1

INSERT INTO DB2.TB1 SELECT * from DB1.TB1;

Ответ 10

Попробуйте mysqldbcopy (документация)

Или вы можете создать " федеративная таблица" на вашем целевом хосте. Федеративные таблицы позволяют видеть таблицу с другого сервера базы данных, как если бы она была локальной. (документация)

После создания объединенной таблицы вы можете скопировать данные с помощью обычного insert into TARGET select * from SOURCE

Ответ 11

С помощью MySQL Workbench вы можете использовать Data Export, чтобы сбрасывать только таблицу в локальный файл SQL (только данные, только структура или структура и данные), а затем импортировать данные для загрузки в другую базу данных.

Вы можете одновременно открывать несколько подключений (разные хосты, базы данных, пользователи).

Ответ 12

Это что-то, что вам нужно делать регулярно или просто один?

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

Ответ 13

используйте следующие шаги для копирования и вставки некоторых столбцов из одной таблицы базы данных в другую таблицу базы данных -

  • CREATE TABLE tablename (имя столбца datatype (размер), тип столбца datatype (размер));

2.INSERT INTO db2.tablename SELECT columnname1, columnname2 FROM db1.tablename;

Ответ 14

В xampp просто экспортируйте требуемую таблицу в файл .sql, а затем импортируйте ее в требуемый

Ответ 15

Один простой способ получить все необходимые запросы - использовать данные из information_schema и concat.

SELECT concat('CREATE TABLE new_db.', TABLE_NAME, ' LIKE old_db.', TABLE_NAME, ';') FROM 'TABLES' WHERE TABLE_SCHEMA = 'old_db';

Затем вы получите список результатов, который выглядит следующим образом:

CREATE TABLE new_db.articles LIKE old_db.articles;
CREATE TABLE new_db.categories LIKE old_db.categories;
CREATE TABLE new_db.users LIKE old_db.users;
...

Затем вы можете просто выполнить эти запросы.

Однако это не будет работать с MySQL Views. Вы можете избежать их, добавив AND TABLE_TYPE = 'BASE TABLE' из исходного запроса:

Ответ 16

ВЫКЛЮЧИТЕ ВАШЕГО ХОСТЕРА !!!! С такими большими записями в базе данных, вы просто чертовски счастливы. На серверах Godaddy у меня было меньше записей в моей БД (по-прежнему около 200MB+), чем у вас, и у меня было более часа, когда я пытался полностью загрузить полную базу данных через phpMyAdmin. Я пробовал со всеми таблицами, я пробовал только несколько таблиц базы данных одновременно и т.д. Загрузка была прервана много раз до начала, и через один или два часа мне наконец удалось получить три загрузки, которые фактически имели одинаковый размер !! Godaddy - самая большая BS, какая только есть.

Если вы хотите получить профессиональную услугу, перейдите на FastComet или A1Hosting, или где-нибудь еще, где люди действительно имеют представление о том, что они делают и о чем говорят. Поддержка Godaddy слишком глупа для ЛЮБЫХ запросов и очень очень грустной истории.

Hostadvice (поиск в Google) предоставит вам лучших хостеров. Я сделал свой выбор, используя их сайт и общаясь через чат с одним из них HostAdvisors, и я не жалею о своем решении пойти на fastcomet ВСЕХ :)

Удачи!

@Мориц: - это не реклама, я не принадлежу ни к одной из этих компаний !!! он говорил о Годди, а я говорил о лучших, чтобы помочь ему !!!!!!!