2015-11-16 2 views
1
.

. Я работаю над перепроектированием старого db, и я установил новые имена в столбцы старого db. Так, например, если olddb.oldtable под dbold имеет столбец descr, я установил его как description в новом newdb.netable для столбца.Выберите «Вставить запрос», указав все столбцы в базах данных.

Как я могу указать отдельные столбцы в моем запросе?

Я использую MYSQL

Update: Обе базы данных находятся на разных IP-адресов, и я использую Navicat для передачи данных.

+0

Что вы подразумеваете под «упоминанием»? Надеюсь, вы отслеживали все эти изменения. –

+0

@LorenzMeyer Qs обновлен. – Volatil3

+0

Любая удача с этим? Если вы найдете решение, отправьте его, потому что меня это тоже интересует. –

ответ

0

Вы можете вставить все столбцы сразу, без необходимости упоминать имена с помощью этого:

INSERT INTO newtable (SELECT * FROM oldtable); 

Это сделает матч 1х1 независимо от имен столбцов.

Если типы не совпадают, тогда будут введены значения по умолчанию (не отмечены для всех комбинаций типов).

Обратите внимание, что номер столбца должен быть одинаковым на обеих таблиц в противном случае возникнет ошибка, как это:

#1136 - Column count doesn't match value count at row 1 
+1

Помните, что имена столбцов различаются в обеих таблицах db – Volatil3

+1

, говоря о совпадениях типа, если столбец 'int', а другой -' tinyint', это не сработает? – Volatil3

+1

Он будет работать, но значение по умолчанию будет равно 0. Он будет работать, даже если один столбец является меткой времени, а другой - int (но я не проверял все комбинации). –

0

Вы можете попробовать так:

INSERT INTO newtable (col1, col2, ...,) 
SELECT col1, col2, ..., FROM oldtable 

Стараясь приведенный выше запрос вы можете вставьте конкретный столбец. Так, например, если ваша Новая_таблица имеет столбец как описание и старый стол, как Descr то можно отметить, что нравится:

INSERT INTO newtable (col1, col2, `description`, ...,) 
SELECT col1, col2, `descr` ,..., FROM oldtable 

Кроме того, если в списке столбца таблицы велик, и вы хотите, чтобы скопировать все столбцы и его данные, то вы можете просто использовать шаблон charcard * as:

INSERT INTO newtable 
SELECT * FROM oldtable; 
Смежные вопросы