Zdravo hninel ,
Kao prvo nisi naveo koji je format datoteke (data source) koju zelis da uneses u SQL Server tabelu. Najjednostavniji nacin za unos podataka u SQL Server tabelu je da koristis utility DTS (Data Transformation Services) koji ti pruza mogucnost da napravis migraciju podataka iz CSC (Comma separated values), Excel itd.. DTS paket mozes da kreiras iz EM-a (Enterprise Manager) a daje ti i mogucnost da koristis VB ili Java script ako zelis da promenis format ulaznih podataka (recimo gada insertujes u Data Warehouse bazu podataka. DTS paket mozes da automatizujes i izvrsavas regularno iz SQL Server job-a. Ja dosta koristim DTS paket kada zelim da migriram data is jednog formata u drugi jer mi pruza mogucnost da u isto vreme izvrsim agregaciju podataka (sumari) i mogu da koristim paralelno pumpanje podataka.
Kada imam migraciju podataka iz tabele sa jedne instance SQL Servera na drugu ja vise volim da koristim BCP nego DTS, specijalno kada je veliki broj redova.
Evo ti primer:
--***********************************************************
-- Korak 1
-- Exportovanje tabele "MojaTabela"
-- u datoteku c:\MojaTabela.dat
-- Izvrsi iz QA (Query Analyser)
-- U ovom primeru je dat export u native formatu (mozes i u text formatu ali je import u novu bazu slow)
********************************************
USE master
xp_cmdshell "bcp ImeServera.ImaTvojeBazePodataka.dbo.MojaTabela out c:\MojaTabela.dat -n -T"
--***********************************************************
-- Korak2
--Pretpostavljam da ces recimo da kreiras novu tabelu u drugoj bazi gde unosis podatke
-- Kreiraj strukturu nove tabele da bude ista kao tabela iz koje exportujes podatke.
-- Najjednostavnije je da kreiras tabelu sa 'SELECT * INTO' gde ces da navedes uslov koji nikad nece biti TRUE. Recimo (1=0). Struktura tabele ce biti kopirana ali podaci ne.
--***********************************************************
USE ImeNoveBaze
SELECT *
INTO MojaNovaTabela
FROM ImeServera.ImaTvojeBazePodataka.dbo.MojaTabela
WHERE 1 = 0
--****************************************************************
-- Korak3
-- Sada mozes da importujes podatke iz datoteke koju si kreirao u prvom koraku "c:\MojaTabela.dat"
-- u tabelu MojaNovaTabela
--*****************************************************************
USE master
xp_cmdshell "bcp ImeServera.ImeBaze.dbo.MojaNovaTabela in c:\MojaTabela.dat -n -T"
--********************************************************
Da si naglasio iz kog tipa datoteke zelis da uneses podatke mogao bih da ti dam konkretniji odgovor.
Ja kada imam text datoteku koja je ogromna i iz koje zelim da azuriram tabele na SQL Serveru svakog dana (pod uslovom da text ima istu-nepromenljivu strukturu podataka) ne koristim ni bcp ni DTS. Jednostavno povezem text datoteku na target SQL Server (gde se azuriranje dogadja) ODBC (DSN) i onda koristim 'SELECT' naredbu da uzmem iz text datoteke ono sto mi treba. To je suvise dugacko da u ovom forumu idem u detalje. Ali ako zelis konkretan odgovor, tvoje pitanje treba da bude konkretno sa svim podacima.
Pozdrav,
Milovan
Regards,
Milovan