Avatar billede west85 Nybegynder
26. august 2009 - 16:36 Der er 23 kommentarer og
1 løsning

Console project

Jeg er ved at lave noget mere lækkert console project som skal afløse en ".cmd"-fil.
Dette indholder bl.a. noget sqlplus kommandoer etc.
Er der en "smart" og gerne nem måde at kunne gøre brug af simple kommandoer så det mest bliver det visuelle der skal ændres ved?
For gider ikke rode med det hvis jeg skal lave en masse om der fungerer nemt, til noget der kræver en masse arbejde og tilpasninger..
Avatar billede kamak Praktikant
26. august 2009 - 16:56 #1
Kan du uddybe hvad du vil lave?
Avatar billede west85 Nybegynder
26. august 2009 - 17:08 #2
Jeg skal køre nogle scripts som sql scripts og nogle cmd/bat-kommandoer.
For at gøre dette smukt også ville jeg gerne lave det i .NET da jeg så ikke skal bruge echo som giver en grim linie med kommandoen før den udskriver på linien underneden.
Men spørgsmålet er så om jeg på en nem måde vil kunne affyre fx. sqlplus kommandoer fra mit console-program, og lign. som er nemt at bruge fra cmd/bar filer.
Avatar billede arne_v Ekspert
27. august 2009 - 01:35 #3
OracleConnection og OracleCommand er ligesaa nemme at bruge som andre databaser.
Avatar billede aaberg Nybegynder
27. august 2009 - 08:41 #4
Og, skal du køre nogle cmd/bat kommandoer, kan du bruge System.Diagnostics.Process klassen
Avatar billede west85 Nybegynder
27. august 2009 - 23:27 #5
Jeg takker, men kommer med et eksempel i morgen hvor i kan forklare mere detaljeret om det er kommandoer der nemt ville kunne udføres som det ville blive i sql og bat/cmd
Avatar billede west85 Nybegynder
28. august 2009 - 14:24 #6
Her er følgende kode som det egentligt helst skulle erstatte.
Det er stadig så det har en pæn header og er mere overskuelig end normal echo fx er.
Og kan den klare alt dette i et kommando kald eller skal der laves en for hver af disse kommandoer?

SET ConStr=username/Password@Profile
SET LogDir=..\..\Log\
SET CsvDataDir=..\csv\

rem Be careful to not leave a trailing space
rem at the end of any SET line below
rem -- for Date format dd-mm-YY to YY-mm-dd

echo off
SET isodate=%DATE:~6,4%%DATE:~2,4%%DATE:~0,2%

rem replace space with 0 only for time
SET isodate=%isodate: =0%
echo on

sqlplus -s %ConStr% @..\sql\sqlScript1.sql

if exist %LogDir%%isodate%_badlog.bad del %LogDir%%isodate%_badlog.bad
if exist %LogDir%%isodate%_goodlog.log del %LogDir%%isodate%_goodlog.log

REM load data
sqlldr  %ConStr% log=%LogDir%%isodate%_importlog.log bad=%LogDir%%isodate%_importlog.bad control=..\ctl\ctlcommander.ctl skip=1 silent=(header,feedback)

REM final work
sqlplus %ConStr% @..\sql\finalsqlwork.sql

echo off
echo slut - vinduet kan lukkes
echo Vinduet lukkes automatisk

ping 168.0.1.1 -n 1 -w 10000
echo on
Avatar billede arne_v Ekspert
29. august 2009 - 23:58 #7
Umiddelbart ser det ud som om aaberg_cc havde fat i det rigtige.

Givet det du viser, så er det rigtige nok at konstruere alle parametrene i .NET kode og så kalde sqlldr og sqlplus via Process klassen.

Ping kan du lige så nemt lave i .NET.
Avatar billede west85 Nybegynder
31. august 2009 - 16:56 #9
arne
"problemet" er blot at jeg ville kunne indtage sql-filer som input og bare køre dem..
sqlldr og sqlplus skulle helst dynamisk blive kaldt fra scriptet ligesom det normalt bliver så jeg ikke skulle filtrere scriptene igennem..
Avatar billede arne_v Ekspert
01. september 2009 - 02:37 #10
Det er også det som Process klassen kan.
Avatar billede west85 Nybegynder
01. september 2009 - 07:31 #11
så jeg kan tage et sqlscript som input og så bruge process klassen for at afvikle det?
Alt fra ovenstående eksempel?
Avatar billede arne_v Ekspert
01. september 2009 - 15:09 #12
Process klassen tillader dig at starte en ny process med en given EXE fil og argumenter til samme.
Avatar billede west85 Nybegynder
01. september 2009 - 19:19 #13
arne
Den må jeg desværre nok ha forklaret lidt nærmere hvordan jeg rent teknisk skulle afvikle scriptet?
Avatar billede arne_v Ekspert
01. september 2009 - 19:31 #14
Kode snippet:

            ProcessStartInfo psi = new ProcessStartInfo();
            psi.FileName = "denexederskalbruges";
            psi.Arguments = "arg1 arg2 arg3";
            psi.CreateNoWindow = true;
            psi.UseShellExecute = false;
            psi.RedirectStandardOutput = true;
            Process p = Process.Start(psi);
Avatar billede west85 Nybegynder
01. september 2009 - 20:02 #15
arne
Tak, men tænkte mere på hvilken exe jeg skal bruge for at kunne eksekvere mine sql scripts?
Det er det jeg er i tvivl om.. Altså normalt skriver du dem ind i en cmd/bat fil som så kalder scriptene og kommandoer..
Avatar billede arne_v Ekspert
01. september 2009 - 20:24 #16
De samme som du kalder i bat filen. sqlldr og sqlplus.
Avatar billede west85 Nybegynder
01. september 2009 - 20:29 #17
Okay det jo desværre lidt skidt da jeg så ikke kan bruge et script der indeholder sqlldr og sqlplus som kommando. Medmindre jeg søger scriptet igennem for det.
Men tak for hjælpen.

Afgiv svar så tildeler jeg
Avatar billede arne_v Ekspert
02. september 2009 - 02:07 #18
Du kan godt bruge et cmd script ved at køre CMD.EXE med script fil som input.
Avatar billede west85 Nybegynder
02. september 2009 - 08:15 #19
ahhh og så vil den kunne køre scriptet som en normal cmd-fil..
Og så kan jeg køre den for hvert script der skal afvikles..
Smukt!
Det reddede sku lige min dag der
Avatar billede arne_v Ekspert
13. september 2009 - 02:27 #20
Tid at få afsluttet her ?
Avatar billede west85 Nybegynder
14. september 2009 - 14:04 #21
Ja lad os det. Smid svar.
Avatar billede arne_v Ekspert
14. september 2009 - 15:05 #22
svar fra mig

husk at Process.Start ideen kom fra aaberg
Avatar billede aaberg Nybegynder
15. september 2009 - 08:52 #23
Arne har brugt meget mere tid på dette spørgsmål end jeg har, så han fortjener at få point.
Avatar billede west85 Nybegynder
15. september 2009 - 18:06 #24
aaberg
Alle?
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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