>allora ho scoperto che il db è qualcosa tipo fatto in cobol...
Oh che bello, allora con molta probabilità si tratta di files ISAM o VSAM
>pero leggendo bene il file ho scoperto che i record iniziano
>tutti con una stringa cosi "..A."
A me non sembra, il file che hai allegato inizia con "0~" ed utilizza "@" come separatore di riga.
Le colonne sono a spaziatura fissa.
Come ho già avuto modo di dirti, puoi utilizzare il comando BULK INSERT definendo il corretto file di formato per ogni singolo file.
Vediamo un esempio per il file APP-T79.
Se lo apri con Notepad noterai che la prima riga è con molta probabilità un header che puoi tranquillamente tralasciare:
A partire dalla seconda riga ci sono i dati che ti interessano. Osservando i dati, la prima colonna è una stringa di 3 caratteri contenenti il codice paese, seguita da 1 spazio (magari nel tracciato record originale il codice è di 4 caratteri, ma ho preferito non importarlo ) ed infine abbiamo la descrizione del paese di 30 caratteri.
OK, il file di formato sarà:
9.0
3
1 SQLCHAR 0 3 "" 1 Code SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 1 "" 0 Dummy ""
3 SQLCHAR 0 30 "@ " 2 Country SQL_Latin1_General_CP1_CI_AS
A questo punto definiamo la tabella ed importiamo i dati:
USE tempdb;
CREATE TABLE dbo.Countries(
Code varchar(3) NOT NULL,
Country varchar(30) NOT NULL
);
BULK INSERT dbo.Countries
FROM 'D:\APP-T79'
WITH (
FORMATFILE = 'D:\APP-T79.fmt'
, FIRSTROW = 2
);
/* Output:
(334 row(s) affected)
*/
SELECT *
FROM dbo.Countries;
/* Output:
Code Country
---- ------------------------------
AD Andora
AE Emirati Arabi Uniti
AE1 Dubai
...
ZR Zaire
ZW Zimbabwe
ZZ Altre nazioni
(334 row(s) affected)
*/
DROP TABLE dbo.Countries;
Sui Books Online troverai tutti i dettagli sul comando BULK INSERT ed i format files.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org