2009-07-20 4 views
0

Dans le serveur SQL, je suis en train d'insérer des valeurs d'une table à l'autre en utilisant la requête suivante:Nom de la colonne ou le nombre de valeurs fournies ne définition de la table correspondent pas sans laisser tomber la table

insert into tblTable1 (
    [Week], 
    20001, 
    20002, 
    20003, 
    20004, 
    20006, 
    20005, 
    W/c 
) 
select * 
from tblTable1_link (
    [Week], 
    20001, 
    20002, 
    20003, 
    20004, 
    20006, 
    20005, 
    W/c 
) 

Je reçois le erreur suivant:

Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near '20001'.
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'Week'.

Je suis sûr que les deux table ayant même structure, les noms de colonnes et le même type de données:

Please see the structure below: 

sp_columns tblTable1_link 

database_name USERACCOUNT tblTable1 Week 4 int 10 4 0 10 1 NULL NULL 4 NULL NULL 1 YES 38 
database_name USERACCOUNT tblTable1 20001 -9 nvarchar 255 510 NULL NULL 1 NULL NULL -9 NULL 510 2 YES 39 
database_name USERACCOUNT tblTable1 20002 -9 nvarchar 255 510 NULL NULL 1 NULL NULL -9 NULL 510 3 YES 39 
database_name USERACCOUNT tblTable1 20003 -9 nvarchar 255 510 NULL NULL 1 NULL NULL -9 NULL 510 4 YES 39 
database_name USERACCOUNT tblTable1 20004 -9 nvarchar 255 510 NULL NULL 1 NULL NULL -9 NULL 510 5 YES 39 
database_name USERACCOUNT tblTable1 20006 -9 nvarchar 255 510 NULL NULL 1 NULL NULL -9 NULL 510 6 YES 39 
database_name USERACCOUNT tblTable1 20005 -9 nvarchar 255 510 NULL NULL 1 NULL NULL -9 NULL 510 7 YES 39 
database_name USERACCOUNT tblTable1 W/c 11 smalldatetime 16 16 0 NULL 1 NULL NULL 9 3 NULL 8 YES 111 

database_name dbo tblTable1_Link Week 4 int 10 4 0 10 1 NULL NULL 4 NULL NULL 1 YES 38 
database_name dbo tblTable1_Link 20001 -9 nvarchar 255 510 NULL NULL 1 NULL NULL -9 NULL 510 2 YES 39 
database_name dbo tblTable1_Link 20002 -9 nvarchar 255 510 NULL NULL 1 NULL NULL -9 NULL 510 3 YES 39 
database_name dbo tblTable1_Link 20003 -9 nvarchar 255 510 NULL NULL 1 NULL NULL -9 NULL 510 4 YES 39 
database_name dbo tblTable1_Link 20004 -9 nvarchar 255 510 NULL NULL 1 NULL NULL -9 NULL 510 5 YES 39 
database_name dbo tblTable1_Link 20006 -9 nvarchar 255 510 NULL NULL 1 NULL NULL -9 NULL 510 6 YES 39 
database_name dbo tblTable1_Link 20005 -9 nvarchar 255 510 NULL NULL 1 NULL NULL -9 NULL 510 7 YES 39 
database_name dbo tblTable1_Link W/c 11 smalldatetime 16 16 0 NULL 1 NULL NULL 9 3 NULL 8 YES 111 

Je ne peux pas laisser tomber la table source, je veux insérer des données sans laisser tomber

Cette requête a abouti:

select * dans tblTable de tblTable_Link

Erreur:

Serveur: Msg 2714, niveau 16, State 6, Line 1 Il existe déjà un objet nommé 'tblTable' dans la base de données.

+0

Pour référence ultérieure, vous devez limiter votre colonne et (et d'autres noms) à ce qu'on appelle « identificateurs », comme la « Semaine » ou « Semaine/Count » (ne sais pas quoi W/c est), et non des nombres et des symboles impairs dans leurs noms. –

Répondre

2

Vous avez à faire référence à des noms de colonnes qui sont des nombres entre parenthèses:

INSERT INTO tblTable1 (
    [Week], 
    [20001], 
    [20002], 
    [20003], 
    etc 

De plus, vous ne devriez pas utiliser SELECT * dans une sous-requête pour une instruction d'insertion. Énumérer les colonnes pour être sûr qu'elles sont dans le bon ordre pour l'insertion.

Aussi je n'ai aucune idée de ce que vous essayez d'accomplir avec la partie "FROM tblTable_Link ([Week],etc". Ce n'est pas une syntaxe SQL valide. Si vous essayez de sélectionner uniquement les colonnes de la table, elles viennent après le mot clé SELECT et avant le mot clé FROM.

+0

No Joy! insérer dans tblTable1 ([Semaine], [20001], [20002], [20003], [20004], [20006], [20005], [W/c]), sélectionnez * dans tblTable1_Link ([Semaine], [ 20001], [20002], [20003], [20004], [20006], [20005], [W/c]) –

+0

Erreur: Serveur: Msg 170, niveau 15, état 1, ligne 1 Ligne 1 : Syntaxe incorrecte près de "Semaine". –

+1

Voir ma modification. Vous avez tout faux votre syntaxe. Avez-vous pris la peine de chercher de la documentation sur la syntaxe SQL? – Welbog

2
insert into tblTable1(
[Week] 
,[20001] 
,[20002] 
,[20003] 
,[20004] 
,[20006] 
,[20005] 
,[W/c]) 
select [Week] 
,[20001] 
,[20002] 
,[20003] 
,[20004] 
,[20006] 
,[20005] 
,[W/c] 
from tblTable1_link 

Raj

+0

Merci Raj a travaillé! –

Questions connexes