Avatar billede carpediem Nybegynder
06. juni 2001 - 10:14 Der er 9 kommentarer og
1 løsning

Generering af script

Er det muligt at lave, enten via Query analyzeren eller Enterprise manageren, et insert script med alle de data der er i tabellen?
Avatar billede slash Nybegynder
06. juni 2001 - 10:20 #1
Hvad vil du konkret? Kan DTS import/export data ikke klare det for dig?
Avatar billede gandalfthewhite Nybegynder
06. juni 2001 - 10:25 #2
Ja, du kunne f.eks. lave en cusor som samler alle data op. For hver række laver du en print som genereres med værdierne fra rækken i tabellen.

Du vil bagefter kunne kopiere print outputtet fra Query Analyserens Messages faneblad.
Avatar billede carpediem Nybegynder
06. juni 2001 - 10:26 #3
Nej en DTS pakke kan ikke klare det for mig.
Det er fordi dataene allerede ligger i databasen.
Nu er det sådan at jeg godt kan lide at have scripts til alle databaser. Så derfor ville det være væsentlig nemmere hvis man automatisk kunne generere et insert script, som tager alle data i databasen. Ligesom man automatisk kan generere scripts til at lave tabeller.
Avatar billede carpediem Nybegynder
06. juni 2001 - 10:31 #4
gandalfthewhite>> Kan du beskrive det nærmere, hvis du mener det kan løse problemet. Jeg er ikke med på hvad du mener.
Avatar billede slash Nybegynder
06. juni 2001 - 10:31 #5
agter du at tage højde for låse/deadlocks ved din globale databasekopieringsscriptus?

Mener nu stadig at DTS kan klare det du efterspørger - og det du efterspørger er for mig at se noget som kopierer data fra tabel 1 til tabel 2 - men igen at generere et script som tager alle data i databasen.....
Avatar billede gandalfthewhite Nybegynder
06. juni 2001 - 10:51 #6
Her kommer et eksempel, det burde vise princippet. Du kan selvfølge udskifte exec sp med insert into (...) osv. :

declare @EntryForm NVarChar(50),
    @FieldName NVarChar(50)

declare curEntry cursor
for select EntryForm, FieldName
from tblSysEntryRange
order by EntryForm, FieldName

open curEntry
fetch next from curEntry into @EntryForm, @FieldName

while @@fetch_status = 0
begin
    print \'EXEC sp_SysEntryRangeSet \'\'\' + @EntryForm + \'\'\', \'\'\' + @FieldName + \'\'\', 1, 1, 0, 0, 0, 0\'
   
    fetch next from curEntry into @EntryForm, @FieldName
end
close curEntry
deallocate curEntry
Avatar billede carpediem Nybegynder
06. juni 2001 - 11:39 #7
gandalfthewhite>> Det virkede jo smukt. Tak skal du ha´
Avatar billede gandalfthewhite Nybegynder
06. juni 2001 - 12:05 #8
Du er velkommen
Avatar billede carpediem Nybegynder
06. juni 2001 - 12:29 #9
Et lille ekstra spørgsmål.
Mit script kom til at se således ud:
declare @DK varchar(1500),
    @UK varchar(1500),
    @D varchar(1500)
declare curEntry cursor
for select DK, UK, D
from Kildetekster
order by ID

open curEntry
fetch next from curEntry into @DK, @UK, @D

while @@fetch_status = 0
begin
Print \'INSERT INTO Kildetekster (DK, UK, D)\'
Print \'VALUES(\'\'\' + @DK + \'\'\', \'\'\' + @UK + \'\'\', \'\'\' + @D + \'\'\')\'
  fetch next from curEntry into @DK, @UK, @D
end
close curEntry
deallocate curEntry

Men hvis enten @DK, @UK eller @D er tom så indsætter den NULL værdier i alle tre variable.
Kan det ikke undgåes?
Avatar billede gandalfthewhite Nybegynder
06. juni 2001 - 12:38 #10
Jo det vil jeg mene.
Problemet er at \"str\" + NULL giver NULL.

Brug IsNull til at replace null værdier. f.eks.

for select IsNull(DK, \"null\"), IsNull(UK, \"null\"), IsNull(D, \"null\")
from Kildetekster
order by ID

Du kan selv eksperimentere videre med hvad replace værdien skal være.
PS. jeg har ikke testet dette, men det burde virke.

Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester