[ TheBatA @ 06.03.2008. 15:45 ] @
Ima li neko ideju kako da na osnovu rezultata select upita generišem insert upit?

Primer:

Imam deo insert upita koji izgleda npr. ovako:
Code:

INSERT INTO [Berza]
(           [Artikal]
           ,[Stanje]
           ,[Opis]
           ,[Cena]
           ,[Valuta]
           ,[Kolicina]
)
VALUES
(


E, sad mi treba ostatak koda, koji bi trebao da bude rezultat izvršavanja select upita, koji izgleda npr. ovako:
Code:

SELECT 
       [Artikal]
      ,[Stanje]
      ,[Opis]
      ,[Cena]
      ,[Valuta]
      ,[Kolicina]
  FROM [Berza]
WHERE [Artikal] = 'Tange'


Na kraju treba da dobijem kao rezultat tekst koji bi bio formatiran na sledeći način:

Code:

INSERT INTO [Berza]
(           [Artikal]
           ,[Stanje]
           ,[Opis]
           ,[Cena]
           ,[Valuta]
           ,[Kolicina]
)
VALUES
('Tange', 2, 'Pamucne', 500, 'DIN', 100)


Lako bih ovo uradio sa varijablama, ali problem je što mi ovo treba za 20-ak tabela koje su različitih struktura, tako da mi je potrebno neko univerzalno rešenje kojem bih mogao da prosledim samo INSERT i SELECT upite.
[ Fedya @ 06.03.2008. 16:16 ] @
SELECT * INTO tabela2 FROM tabela1 WHERE...
[ TheBatA @ 06.03.2008. 23:02 ] @
Citat:
Fedya: SELECT * INTO tabela2 FROM tabela1 WHERE...


Ovo mi ne rešava problem, već samo izvršava upit za koji je meni potrebna cela skripta.

Potreban mi je INSERT upit, t.j. skripta koju ću moći da izvršim na drugom računaru.
Konkretno: kod sebe na računaru imam jednu bazu sa aktuelnim podacima. Kada se doda npr. novi artikal u bazu, ja treba da generišem skript koji će taj artikal da doda u neku bazu sa identičnom strukturom u kojoj navedeni artikal ne postoji. Ta baza se obično nalazi na nekom drugom računaru.

Problem bi mi rešila npr. stored procedura koja bi kao rezultat izvršavanja dala navedenu skriptu u obliku teksta/tekst fajla, kako bih ja mogao da tu skriptu uvučem u program naknadno i da je pošaljem klijentu.

Ideja je napraviti jednu varijablu koja bi sadržala vrednost u obliku
Code:

INSERT INTO [Berza]
(           [Artikal]
           ,[Stanje]
           ,[Opis]
           ,[Cena]
           ,[Valuta]
           ,[Kolicina]
)
VALUES
('Tange', 2, 'Pamucne', 500, 'DIN', 100)


[ M E N E @ 07.03.2008. 07:37 ] @
a replikacija?
[ Predrag Glumac @ 07.03.2008. 13:31 ] @
Linked servers, pa toj bazi pristupas sa fully qualified name iz stored proc na prvom serveru.
[ DarkMan @ 07.03.2008. 13:45 ] @
Na netu imas skripti za generisanje insert-a (potrazi na google).
Takodje mozes da potrazis na google "Database Export Utility".
Ovaj na primer ima i export data http://www.eggheadcafe.com/articles/20040913.asp
[ Zidar @ 07.03.2008. 14:15 ] @
Evo skripta:
Code:

INSERT INTO [CiljnaBaza].dbo.[Berza]  -------- tabela u koju ucitavas podatke
(           [Artikal]
           ,[Stanje]
           ,[Opis]
           ,[Cena]
           ,[Valuta]
           ,[Kolicina]
)
---VALUES ----- ne moze VALUES kad koristsi SELECT
---('Tange', 2, 'Pamucne', 500, 'DIN', 100)
SELECT 
       [Artikal]
      ,[Stanje]
      ,[Opis]
      ,[Cena]
      ,[Valuta]
      ,[Kolicina]
  FROM [Izvornabaza].dbo.[Tabela iz koje cistas podatke]
WHERE [Artikal] = 'Tange'


Uslov: da se kolone u INSERT INTO i kolone u SELECT slazu, da ih ima isto i da su nabrojena istim redom. ne moraju da se zovu isto.
Ovako:

INSERT INTO CiljnaTabela
(Kol1, Kol2, Kol3, Kol4)
SELECT
Polje1, Polje2, Polje3, Polje4
FROM IzvornaTabela

se mapira ovako:

Polje1 ---> Kol1
Polje2 ---> Kol2
Polje3 ---> Kol3
Polje4 ---> Kol4