Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

BULK INSERT

85 views
Skip to first unread message

Simone

unread,
Aug 29, 2003, 11:17:08 AM8/29/03
to
Ciao

Sto utilizzando il bulk per inserire dei dati di un file
in una tabella

funziona tutto bene nel senso che mi crea un record per
ogni riga che trovo nel file


ho provato ad aggiungere una colonna in piu nella mia
tabella in modo da avere un contatore e in questo modo
l'inserimento non viene effettuato...

Domanda come posso fare?????

a dire al bulk di inserire i dati in una determinata
colonna e intanto far incrementare il contatore
all'interno della tabella ....si puo ???? oppure che
soluzione mi proponete


Ciaooooo

Andrea Montanari

unread,
Aug 29, 2003, 11:40:40 AM8/29/03
to
salve Simone,
>-----Messaggio originale---

>Sto utilizzando il bulk per inserire dei dati di un file
>in una tabella

>ho provato ad aggiungere una colonna in piu nella mia

>tabella in modo da avere un contatore e in questo modo
>l'inserimento non viene effettuato...
>
>Domanda come posso fare?????
>
>a dire al bulk di inserire i dati in una determinata
>colonna e intanto far incrementare il contatore
>all'interno della tabella ....si puo ???? oppure che
>soluzione mi proponete

se aggiungi una colonna di tipo IDENTITY, di default le
operazione BULK bypassono questo tipo di colonna.. ad
esempio
create table #studenti (
Id INT IDENTITY(1,1),
Nome VARCHAR(50) ,
Cognome VARCHAR(50),
Sesso CHAR(1)
)

BULK INSERT #studenti FROM 'd:\dati.txt'
WITH (
DATAFILETYPE = 'char',
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n')

SELECT * FROM #studenti
DROP TABLE #studenti


RISULTATO
(righe interessate: 3)

Id
Nome
Cognome Sesso
----------- -----------------------------------------------
--- -------------------------------------------------- ----
-
1
Andrea
Montanari M
2
Lorenzo
Benaglia M
3
Luca
Bianchi M

(righe interessate: 3)


------------------------------
contenuto file "DATI.TXT"
0,Andrea,Montanari,M
0,Lorenzo,Benaglia,M
0,Luca,Bianchi,M

la valorizzazione della colonna IDENTITY viene
automaticanente gestita dal motore...

ovvero puoi utilizzare un file di formato specificando
FORMATFILE = 'path_def_file_di_formato'

saluti
Andrea Montanari
montanar...@virgilio.it
http://www.asql.biz/DbaMgr.shtm
DbaMgr2k ver 0.4.0 - DbaMgr ver 0.50.0
(my vb6+sql-dmo little try to provide MS MSDE 1.0 and MSDE
2000 a visual interface)
--------- remove DMO to reply

Lorenzo Benaglia

unread,
Aug 29, 2003, 12:13:46 PM8/29/03
to
Simone wrote:
> ho provato ad aggiungere una colonna in piu nella mia
> tabella in modo da avere un contatore e in questo modo
> l'inserimento non viene effettuato...
>
> Domanda come posso fare?????

Ciao Simone,

se la struttura del file di testo non corrisponde a quella della tabella di
destinazione, devi ricorrere ad un file di formato.

Supponiamo di avere il seguente file di input C:\Students.txt:

<BOF>
Lorenzo,Benaglia
Luca,Bianchi
Gianluca,Hotz
Andrea,Montanari

<EOF>

e di volerlo importare nella seguente tabella:

USE tempdb
GO

/* Creo la tabella dbo.Students */
CREATE TABLE dbo.Students(
StudentID int NOT NULL IDENTITY PRIMARY KEY,
FirstName varchar(10) NOT NULL,
LastName varchar(10) NOT NULL
)
GO

Come prima cosa definisco "il mapping" tra le colonne del file di testo con
la tabella di destinazione, e memorizzo queste info nel file C:\Students.fmt

<BOF>
8.0
2
1 SQLCHAR 0 10 "," 2
FirstName SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 10 "\r\n" 3
LastName SQL_Latin1_General_CP1_CI_AS
<EOF>

A questo punto sono pronto:

/* La popolo */
BULK INSERT dbo.Students
FROM 'C:\Students.txt'
WITH (
FORMATFILE = 'C:\Students.fmt'
)
GO

/* Verifica */
SELECT *
FROM dbo.Students
GO

/* Output:

StudentID FirstName LastName
----------- ---------- ----------
1 Lorenzo Benaglia
2 Luca Bianchi
3 Gianluca Hotz
4 Andrea Montanari

(4 row(s) affected)

*/

/* Pulizia */
DROP TABLE dbo.Students

Trovi tutti i dettagli sui Books Online.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org

0 new messages