Копирование SQL данных из резервной таблицы в другую таблицу - PullRequest
0 голосов
/ 04 февраля 2020

Какой самый простой способ скопировать данные из одной таблицы MariaDB SQL в другую таблицу, в которой уже есть все те же столбцы. По сути, у нас есть резервная таблица (crdynamics.customer_records_backup) с некоторыми примерами данных, и я хочу скопировать эти данные в другую таблицу (crdynamics.customer_records). Опять же, это идентичные таблицы - только у одного есть данные, а у другого нет.

Какой самый простой синтаксис, доступный для выполнения sh, что?

Я пробовал это, но синтаксис неверен:

UPDATE crdynamics.customer_records
SELECT *
FROM
    crdynamics.customer_records_backup

Ответы [ 3 ]

3 голосов
/ 04 февраля 2020

Вы, похоже, просто хотите INSERT, а не UPDATE.

INSERT crdynamics.customer_records (<ColumnList>)
SELECT
 <ColumnList>
FROM 
 crdynamics.customer_records_backup;

Технически, вы можете сделать это:

INSERT crdynamics.customer_records 
SELECT
 *
FROM 
 crdynamics.customer_records_backup;

Но всегда указание имен столбцов гораздо менее подвержено ошибкам.

0 голосов
/ 11 февраля 2020
CREATE TABLE new_backup LIKE real_table;
INSERT INTO new_backup SELECT * FROM real_table;
RENAME TABLE backup TO old_backup, new_backup TO backup;
DROP TABLE old_backup;

Примечания:

  • backup всегда существует и заполняется, в отличие от случаев, которые включают TRUNCATE, et c.
  • Делая CREATE .. LIKE и RENAME, вы захватываете текущую схему, даже если она изменилась.
  • RENAME - это атомы c.
  • (недостаток) В ходе процесса есть 3 копии стола; это может быть проблема с дисковым пространством.
  • (недостаток) INSERT .. SELECT, real_table блокирует некоторые другие действия.
  • Ответы, в которых упоминается только INSERT .. SELECT, не могут сказать, что происходит на секунда резервная копия.
0 голосов
/ 04 февраля 2020

Вы можете использовать вставку в операторе выбора

insert into crdynamics.customer_records 
SELECT * FROM crdynamics.customer_records_backup 
where 1=1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...