2016-11-08 2 views
0

J'ai deux tables massives, avec beaucoup de valeurs dupliquées, et je viens de créer un nouveau schéma de base de données. Maintenant, je dois extraire toutes les données pour les insérer dans la nouvelle table.Comment insérer des données d'une autre table dans une table existante, avec un ID auto-incrémenté?

Cependant, je suis confronté à un problème: ce que j'essaie de faire, c'est d'extraire une colonne (pour l'instant) de l'une des grandes tables, et de l'insérer dans la table Town (id_town, town_name), avec id_town étant un autoincrementing clé primaire, comme:

ALTER TABLE Town 
ADD COLUMN id_town SERIAL PRIMARY KEY; 

Je l'ai fait, donc je peux extraire toutes les villes et mettre tout le monde d'entre eux avec leur carte d'identité spécifique. (Si vous avez une meilleure solution, je vais prendre le chemin!)

Donc, je suis en train d'extraire les données, mais il ne fonctionne pas:

INSERT INTO town 
SELECT DISTINCT location 
FROM old_table1 

L'erreur affichée me dit qu'il attend la valeur de id_town; mais, d'après ce que j'ai compris des valeurs croissantes, elle devrait se générer elle-même.

Qu'est-ce que je fais mal?


L'autre problème que je rencontre: Je suppose que j'ai un peu la bonne syntaxe pour extraire une colonne de l'ancienne table à mettre dans la nouvelle, mais je ne sais pas vraiment comment je suis supposé extraire des colonnes spécifiques de l'une des deux anciennes tables, et les mettre dans seulement quelques colonnes de la nouvelle table:

J'ai une table, par exemple, qui a 6 colonnes (y compris l'ID auto-incrémenté), 3 de ceux-ci proviennent de old_table1, 2 d'entre eux de old_table2. Comment suis-je censé extraire les données?

Merci beaucoup!

Répondre

1

Essayez cette

INSERT INTO town (town_name) 
SELECT DISTINCT location 
FROM old_table1 

Si vous ne fournissez pas des valeurs pour toutes les colonnes, alors vous devriez spécifier explicitement les colonnes que vous insérez dans

+0

Eh oui, il fonctionne, merci beaucoup! Maintenant, j'essaie de comprendre comment faire fonctionner mon système, parce que j'essaie maintenant d'utiliser un Star Schema, et c'est la première fois que j'essaie ça! – Alan