Condividi:        

SQL: Importazione di un CSV e aggiunta di una colonna

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Anthony47, Triumph Of Steel, archimede

SQL: Importazione di un CSV e aggiunta di una colonna

Postdi Dylan666 » 21/11/09 18:45

Devo importare il contenuto di un CSV in SQL ed ho trovato questa serie di comandi:

Codice: Seleziona tutto
CREATE TABLE cvs_test
(cat varchar(40),
subcat varchar(40),
decr text,
id int
)
GO

BULK INSERT cvs_test
FROM 'c:\csvtest.txt'  --or a .csv file
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO


I dati nel file di testo sono 3 e testuali, io però vorrei che nel DB venisse aggiunta anche una colonna chiamata ID di tipo INT che abbia la proprietà IDENTITY in modo da poterla usare come chiave primaria.

Come faccio a inserirla al momento dell'importazione del CSV?
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Sponsor
 

Re: SQL: Importazione di un CSV e aggiunta di una colonna

Postdi archimede » 22/11/09 10:38

Non puoi aggiungerla dopo l'import?

Alessandro

PS: mi sa che ho detto una stupidata. :oops: Se si tratta di un IDENTITY di SQL Server credo che sia sufficiente definirla nella tabella e poi fare l'import: dovrebbe essere automaticamente popolata.
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Re: SQL: Importazione di un CSV e aggiunta di una colonna

Postdi Dylan666 » 22/11/09 22:54

Aggiungendo DOPO una colonna di tipo INT con la proprietà IDENTITY si popola da sola con un numero progressivo e mi va benissimo.
La mia ciriosità era: non si può crearla prima?
Non è possibile insomma definire campi che poi non siano riempiti dai dati del CVS?
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: SQL: Importazione di un CSV e aggiunta di una colonna

Postdi archimede » 23/11/09 09:58

Non ho idea di come funzioni BULK INSERT: mi aspetterei che se il tuo file dati contiene 3 campi e la tabella ne contiene 4, l'ultimo campo venga ignorato (se NULLable) ma è tutto da verificare (su questa supposizione si basa il mio PS di prima).

Alessandro

PS: http://msdn.microsoft.com/en-us/library/ms178129.aspx
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Re: SQL: Importazione di un CSV e aggiunta di una colonna

Postdi Dylan666 » 24/11/09 17:52

Se invece volessi aggoungerlo DOPO con un comando, come si fa?
Ci sto provando da MSDE usando la GUI DbaMGR2k ma ogni volta non gli va bene qualcosa....

Calcola che il DB si chiama test1 e la tabella cvs_test
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: SQL: Importazione di un CSV e aggiunta di una colonna

Postdi Dylan666 » 24/11/09 18:02

Ecco qui l'errore che ho:
Immagine
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: SQL: Importazione di un CSV e aggiunta di una colonna

Postdi archimede » 24/11/09 19:14

Suppongo modificando la tabella, non facendo l'import. Quindi o metti il check dove manca (che immagino stia ad indicare la proprietà nullable del campo) o, se non te lo permette, mi sa che devi aggiungere il campo a tabella vuota (oppure aggiungere un int normale, riempirlo e poi convertirlo in Identity).

Se c'è qualcuno che ne sa di SQL Server forse è meglio però, sto tirando molto a indovinare.

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Re: SQL: Importazione di un CSV e aggiunta di una colonna

Postdi Dylan666 » 25/11/09 09:50

Su SQL Express 2005 o 2008 riesco a fare la colonna DOPO l'importazione senza problemi.
Il NULLALBLE non si può mettere per i campi con IDENTITY.
INT normale non lo posso mettere perché così non si auto-incrementa come numeratore
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46


Torna a Programmazione


Topic correlati a "SQL: Importazione di un CSV e aggiunta di una colonna":


Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti