2016-11-08 5 views
0

У меня есть две массивные таблицы с большим количеством дублированных значений, и я просто создал новую схему базы данных. Теперь я должен извлечь все данные, чтобы вставить их в новую таблицу.Как вставить данные из другой таблицы в существующую таблицу с автоинкрементным идентификатором?

Однако у меня возникла проблема: то, что я пытаюсь сделать, состоит в том, чтобы извлечь одну колонку (на данный момент) из одной большой таблицы и вставить ее в таблицу Город (id_town, town_name) с id_town будучи автоинкрементом Первичный ключ, как:

ALTER TABLE Town 
ADD COLUMN id_town SERIAL PRIMARY KEY; 

Я сделал это, так что я могу извлечь все города и поставить все из них с их конкретным ID. (Если у вас есть лучшее решение, я возьму его, кстати!)

Итак, я пытаюсь извлечь данные, но он не работает:

INSERT INTO town 
SELECT DISTINCT location 
FROM old_table1 

Отображаемое ошибке говорит, что он ждет значения id_town; но, исходя из того, что я понял об увеличении значений, он должен генерировать себя.

Что я делаю неправильно?


Другая проблема я встречаю: Я предполагаю, что я вроде есть правильный синтаксис для извлечения одного столбца из старой таблицы, чтобы поместить его в новый, но я не знаю, как я предположительно, чтобы извлечь определенные столбцы из одной из двух старых таблиц и поместить их только в некоторые столбцы новой таблицы:

У меня есть таблица, например, имеющая 6 столбцов (включая идентификатор автоинкремента), 3 из они исходят из old_table1, из них 2 из old_table2. Как я могу извлечь данные?

Большое спасибо!

ответ

1

Попробуйте

INSERT INTO town (town_name) 
SELECT DISTINCT location 
FROM old_table1 

Если вы не предоставляете значения для всех столбцов, то вы должны явно указать столбцы, которые вы вставляете в

+0

Да, это работает, спасибо много! Теперь я пытаюсь понять, как заставить мою систему работать, потому что теперь я пытаюсь использовать Star Schema, и это первый раз, когда я пытаюсь это сделать! – Alan