Объединение 2 таблиц с одинаковой структурой, но хранящихся в разных базах данных в MySQL - PullRequest
0 голосов
/ 03 ноября 2011

Я думаю, что я ищу команду под названием "INSERT, НО НЕ УКАЗАТЬ МОИ НЕПРАВИЛЬНЫЕ КЛЮЧИ В" ...

У меня есть таблица на моей локальной машине, которая выглядит следующим образом.Идентификатор автоматически увеличивается: -

id name
1  bob
2  phil

, а другой на моем сервере выглядит следующим образом: -

id name
1  jane
2  sally

, и я хочу вставить записи из одной в другую, чтобы яв итоге получим таблицу с записями 1,2,3,4.

Если я воспользуюсь опцией экспорта в моем локальном phpmyadmin (хотя я не привередлив в инструментах администратора), я получу этот sql:

INSERT INTO mytable (id, name) VALUES (1, 'Bob'),(2, 'Phil')

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

1 Ответ

0 голосов
/ 03 ноября 2011

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

Отказ от ответственности: Следующее повлияет на все строки.Не выполняйте его, пока не убедитесь, что хотите.

-- Add 5000 to all ids
UPDATE tbl SET id = id + 5000;

После этого вы сможете экспортировать и объединять таблицы на INSERT без коллизий.Ваш экспорт будет выглядеть так:

INSERT INTO mytable (id, name) VALUES (5001, 'Bob'),(5002, 'Phil')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...