Как лучше всего скопировать данные из таблицы в одной базе данных в таблицу в другой базе данных, если базы данных принадлежат разным пользователям?
Я знаю, что я могу использовать
INSERT INTO database2.table2 SELECT * from database1.table1
Но тут проблема в том, что оба database1
и database2
находятся под разными пользователями MySQL. Так user1
может получить доступ database1
только и user2
может получить доступ database2
только. Любая идея?
Ответы:
Если у вас есть доступ к оболочке, вы можете использовать его
mysqldump
для выгрузки содержимого и передачиdatabase1.table1
его поmysql
адресуdatabase2
. Проблема в том, чтоtable1
это все ещеtable1
.Может быть , вам нужно переименовать ,
table1
чтобыtable2
с другим запросом. С другой стороны, вы можете использовать sed, чтобы изменить table1 на table2 между каналами to.Если table2 уже существует, вы можете добавить параметры в первый mysqldump, который не позволяет создавать таблицы-создает.
источник
CREATE TABLE db1.table1 SELECT * FROM db2.table1
где db1 - пункт назначения, а db2 - источник
источник
ALTER TABLE db1.table1 ADD PRIMARY KEY (id); ALTER TABLE db1.table1 MODIFY COLUMN id INT AUTO_INCREMENT;
Если вы используете PHPMyAdmin, это может быть очень просто. Предположим, у вас есть следующие базы данных:
DB1 имеет таблицу пользователей, которую вы хотите скопировать в DB2
Под PHPMyAdmin откройте DB1, затем перейдите к таблице пользователей.
На этой странице нажмите на вкладку «Операции» в правом верхнем углу. В разделе «Операции» найдите раздел « Копировать таблицу в (database.table)»:
& вы сделали!
источник
MySql Workbench : настоятельно рекомендуется
Это легко решит проблемы миграции. Вы можете переносить выбранные таблицы выбранных баз данных между MySql и SqlServer. Вы должны обязательно попробовать.
источник
mysql Workbench
миграциюSQLYog
с копией базы данных? На мой взгляд, кажется, что они очень похожи, но mysql workbench - более новая функцияЯ использую Navicat для MySQL ...
Это делает все манипуляции с базой данных легкими!
Вы просто выбираете обе базы данных в Navicat и затем используете.
источник
Я знаю, что это старый вопрос, просто отвечаю так, что любой, кто приземлится здесь, получит лучший подход.
С 5.6.10 вы можете сделать
См. Документацию здесь: https://dev.mysql.com/doc/refman/5.7/en/create-table-like.html
источник
Если ваши таблицы находятся на одном сервере MySQL, вы можете запустить следующее
источник
Используйте функции экспорта и импорта MySql Workbench. Шаги:
1. Выберите значения, которые вы хотите
создать новую таблицу, используя аналогичные столбцы, как первый
выбрать все из новой таблицы
Нажмите «Импорт» и выберите файл CSV, который вы экспортировали на шаге 2
источник
Вот еще один простой способ:
INSERT INTO DB2.TB1 SELECT * from DB1.TB1;
источник
Попробуй
mysqldbcopy
( документация )Или вы можете создать « федеративную таблицу » на целевом хосте. Объединенные таблицы позволяют видеть таблицу с другого сервера базы данных, как если бы она была локальной. ( документация )
После создания федеративной таблицы вы можете скопировать данные с обычного
insert into TARGET select * from SOURCE
источник
С MySQL Workbench вы можете использовать Экспорт данных, чтобы выгрузить только таблицу в локальный файл SQL (Только данные, Только структура или Структура и данные), а затем Импорт данных, чтобы загрузить ее в другую БД.
Вы можете одновременно открыть несколько соединений (разные хосты, базы данных, пользователи).
источник
Один простой способ получить все необходимые запросы - использовать данные из information_schema и concat.
Затем вы получите список результатов, который выглядит следующим образом:
Затем вы можете просто выполнить эти запросы.
Однако это не будет работать с MySQL Views. Вы можете избежать их, добавив
AND TABLE_TYPE = 'BASE TABLE'
из исходного запроса:источник
Это то, что вам нужно делать регулярно или только один раз?
Вы можете сделать экспорт (например, используя phpMyAdmin или аналогичный), который запишет вашу таблицу и ее содержимое в текстовый файл, а затем вы можете повторно импортировать его в другую базу данных.
источник
Используйте следующие шаги для копирования и вставки некоторых столбцов из одной таблицы базы данных в другую таблицу базы данных.
2.INSERT INTO db2.tablename ВЫБРАТЬ имя столбца1, имя столбца2 ОТ db1.tablename;
источник
Сначала создайте дамп. Добавлены
--no-create-info --no-create-db
флаги, если ониtable2
уже существуют:Затем введите
user1
пароль. Затем:Затем введите
user2
пароль.То же, что и ответ @helmors, но этот подход более безопасен, поскольку пароли не отображаются в текстовом виде на консоли (обратный поиск, перехватчики паролей и т. Д.). Другой подход хорош, если он выполняется из файла сценария с соответствующими ограничениями на его разрешения.
источник
В xampp просто экспортируйте нужную таблицу в виде файла .sql, а затем импортируйте ее в нужный
источник
создайте таблицу destination_customer, например sakila.customer (Database_name.tablename), при этом будет скопирована только структура исходной таблицы, для того чтобы данные также копировались со структурой, выполните эту операцию, чтобы создать таблицу destination_customer как select * from sakila.customer
источник
CREATE TABLE LIKE
в вопросе, так зачем упоминать, что это неправильно? И нет никакого объяснения того, как этот ответ решает проблему того, что ни один пользователь не имеет доступа к таблицам другого.