witam,
musze napisać prosty skrypt .bat który będzie mi wczytywał duzo insertów do bazy
ma ktoś jakiś pomysł jak to zrobić
Zawsze (chyba) do bazy jest dołączony jakiś interfejs konsolowy. Wpisz w bacie komendę logowania do bazy a potem te inserty, wszystko.
tyle to też wiem, chodzi mi o skrypt .bat, w którym będę odpalał polecenie sql, jak to zrobić to w sumie chyba wiem, tyle że tych insertów będzie sporo ponad 50k, kazdy z ok. 150kolumnami, plików będzie tez trochę, co bym potrzebował to zrobić jakiś pasek postępu, cokolwiek, jakaś forma informacji dla użytkownika ile do tej pory wczytało linii (1 linia = 1 insert) z pliku
Ale.. po co? Czemu nie moze to byc skrypt bat?
A przede wszystkim, jaka baza danych?
Człowieku a co więcej mogę Ci powiedzieć jak nie wiem jaka baza.
Tu masz o Firebirdzie http://www.destructor.de/firebird/isql.htm
baza oracla, samo polecenie wiem jak ma mniej więcej wyglądać
chyba coś takiego :
sqlplus user/pass@adres_hosta:1521/sid <nazwa pliku.sql
co mnie bardziej interesuje to jak w trakcie wykonywania tego skryptu gdy będą "leciały" kolejne inserty, wypisywać w konsoli postęp procentowy, lub jakiś inny, choćby info, że wczytano x krotek, co np. 1000 insertów.
I jeszcze może frytki do tego ;)?
Podziel ten plik na mniejsze czesci (nie wiem czy w windowsie sa do tego jakies polecenia), a potem wczytuj pokolei po jednej czesci i informuj o postepie. Wygladalo by to tak:
-podziel plik sql
-dodaj zapytania z pliku 1.sql
-wypisz (przykladowo) 10%
-dodaj zapytania z pliku 2.sql
(...)
no to proponuję nie .bat tylko .vbs, coś w deseń
Dim strSrv: strSrv="sqlserver,1433"
Dim strDB: strDB="baza"
Dim strLogin: strLogin="sa"
Dim strPass: strPass="haselko"
set objConn=CreateObject("ADODB.Connection")
objConn.Provider="SQLOLEDB.1;Password="&strPass&";Persist Security Info=True;User ID="&strLogin&";Initial Catalog="&strDB&";Data Source="&strSrv&""
objConn.open
set objComm=CreateObject("ADODB.Command")
objComm.ActiveConnection = objConn
'objComm.Properties("Page Sice")=1000
objComm.CommandText="update uzytkownicy set haslo='zam' where nazwisko = 'serwis';"
set objRS = objComm.Execute
objComm.CommandText="select * from uzytkownicy order by nazwisko;"
set objRS = objComm.Execute
While Not objRS.EOF
Wscript.Echo objRS.Fields(2).Value & " " & objRS.Fields(1)
' Wscript.Echo objRS.Items("nazwisko").Value & " " & objRS.Fields(1)
objRS.MoveNext
wend
objConn.Close
MsgBox("Zapytanie wykonane")
oczywiście teraz należy dorobić ładowanie insertów z pliku .sql, w pętelce pokazać jakiś progress