Самый простой способ скопировать таблицу из одной базы данных в другую?
Каков наилучший способ скопировать данные из таблицы в одной базе данных в таблицу в другой базе данных, когда базы данных находятся под разными пользователями?
Я знаю, что могу использовать
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 и SqlServer. Вы должны дать ему определенную попытку.
Ответ 5
Я использую Navicat для MySQL...
Это облегчает манипуляции с базой данных.
Вы просто выбираете обе базы данных в Navicat и затем используете.
INSERT INTO Database2.Table1 SELECT * from Database1.Table1
Ответ 6
Используйте функцию экспорта и импорта MySql Workbench.
Этапы:
1. Выберите нужные значения
E.g. select * from table1;
- Нажмите кнопку "Экспорт" и сохраните ее как CSV.
-
создать новую таблицу, используя аналогичные столбцы, как первая
E.g. create table table2 like table1;
-
выберите все из новой таблицы
E.g. select * from table2;
-
Нажмите "Импорт" и выберите файл CSV, который вы экспортировали на шаге 2
Ответ 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
Вот еще один простой способ:
- использовать DB1; показать создать таблицу TB1;
- Скопируйте синтаксис здесь в буфер обмена, чтобы создать TB1 в DB2
- использовать 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 ВСЕХ :)
Удачи!
@Мориц: - это не реклама, я не принадлежу ни к одной из этих компаний !!! он говорил о Годди, а я говорил о лучших, чтобы помочь ему !!!!!!!