@mk_qwerty

Как выполнить перенос данных между базами данных?

Есть две базы данных:

База 1:
CREATE TABLE book
(
    ID int not null auto_increment,
    NAME varchar(500) not null,
    ISSUE_YEAR YEAR,
    PUBLISHER_ID int,
    ISBN char(17),
    PRICE DECIMAL(10, 2),
    QUANTITY int unsigned not null default 0,
    PRIMARY KEY (ID),
    INDEX IX_BOOK_PUBLISHER (PUBLISHER_ID),
    FOREIGN KEY FK_BOOK_PUBLISHER (PUBLISHER_ID) references publisher(ID)
        ON UPDATE RESTRICT
        ON DELETE RESTRICT
);
#И остальные таблицы


База 2:
CREATE TABLE IF NOT EXISTS store
(
    ID int not null auto_increment,
    CITY varchar(255) not null,
    PRIMARY KEY (ID)
);

CREATE TABLE book
(
    ID int not null auto_increment,
    NAME varchar(500) not null,
    ISSUE_YEAR YEAR,
    PUBLISHER_ID int,
    ISBN char(17),
    PRIMARY KEY (ID),
    INDEX IX_BOOK_PUBLISHER (PUBLISHER_ID),
    FOREIGN KEY FK_BOOK_PUBLISHER (PUBLISHER_ID) references publisher(ID)
        ON UPDATE RESTRICT
        ON DELETE RESTRICT
);

CREATE TABLE book_store
(
    BOOK_ID int not null,
    STORE_ID int not null,
    PRICE DECIMAL(10, 2),
    QUANTITY int unsigned not null default 0,
    PRIMARY KEY (BOOK_ID, STORE_ID),
    FOREIGN KEY FK_BOOK_STORE_BOOK (BOOK_ID) references book(ID)
        ON UPDATE RESTRICT
        ON DELETE RESTRICT,
    FOREIGN KEY FK_BOOK_STORE_STORE (STORE_ID) references store(ID)
        ON UPDATE RESTRICT
        ON DELETE RESTRICT
);


Необходимо перенести данные BOOK_ID, PRICE, QUANTITY из таблицы book базы1 в таблицу book_store базы2.
Как это выполнить?
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
В исходной таблице нет данных о STORE_ID, поэтому следует использовать некоторое значение по умолчанию:
INSERT INTO bookstorev2.book_store (BOOK_ID, STORE_ID, PRICE, QUANTITY)
    SELECT 
        book.ID, 
        1,  -- default STORE_ID
        book.price, 
        book.quantity 
    FROM bookstore.book;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы