Centar za edukaciju-BiH


Stranice (2):1,2

#11 04.09.2017 21:40
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,696


Predmet:Re: Uvoz Podataka - Sql Naredbe
Cek, nisam razumio. Apostrof je za brojeve?
zivot je moja domovina.
↑  ↓

#12 04.09.2017 22:49
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: Uvoz Podataka - Sql Naredbe
za rojeve apostrof ti netreba ali nije greska i ako ga koristis.
Ako je pole definirano kao broj onda mozes da ga popunis i sa apostrof ai bez njega, ako je pole kao tekst ili string onda moras imati apostrof bezrazlika dali unosis brojeve ili tekst.

ovako imamo pole koje se zove Kolicina DOUBLE ( ja uvek ga koristim kad vrednosti su brojeve )
Sql bi isao otprilike ovako:
INSERT INTO tblDetali SET Kolicina=1.22 WHERE ID_Detali=100 ili
INSERT INTO tblDetali SET Kolicina='1.22' WHERE ID_Detali=100
↑  ↓

#13 27.09.2017 13:41
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,696


Predmet:Re: Uvoz Podataka - Sql Naredbe
rijesio , a bilo je vise nego jednostavno samo mi je trebalo vremna da otkrijem.

Recimo da imamo neku bazu: ime_baze i u njoj 2 table tab_1 i tab_2.
Te se table sastoje od kolona, a u svakoj koloni su podaci.
Pa tako tab_1 ima kolone ID ime , a tab_2 ima kolone ID tezina

Ime_baze

tab_1
---------
ID | ime

tab_2
---------
ID | tezina

potrebno je iz exela prebaciti podatke u te dvije table na taj nacin da
prvo obrisemo stare podatke, a onda upisemo nove.

koristeci WRITE naredbu u VBA dobijamo txt doument u kojem su podaci sa navodnicima,
a to nam ne pase jer pokretanjem SQL on nemoze to izvrsiti.
Stvar je vrlo jednostavna umjesto WRITE naredbe koristimo PRINT naredbu.

evo kako to izgleda u VBA, samo dio koda

PreuzmiIzvorni kôd (Visual Basic):
  1. Dim FF As Integer
  2. Dim imeFile As String
  3. FF = FreeFile()
  4.  
  5. exportName = "ime_datoteke.sql"
  6.  
  7. resetiranje varijabli
  8. celija1 = "": celija2 = ""
  9. PrintString = ""
  10.  
  11. Open exportName For Output As #FF
  12.         Print #FF, "TRUNCATE TABLE tab_1;"
  13.         Print #FF, "TRUNCATE TABLE tab_2;"
  14.         Print #FF, "INSERT INTO tab_1 (ID, ime)"
  15.         Print #FF, "VALUES"
  16.         For red = 1 To zadnjiRed /ovo mozete mijenjati
  17.  
  18.             celija1 = Cells(red, 2).Value 'uzima ID iz celije
  19.            celija2 = Cells(red, 3).Value 'uzima ime iz celije
  20.            
  21.             If PrintString = "" Then
  22.                 /ako je PrintString prazan , radi se o prvom redu pa nema zareza na pocetku
  23.                 PrintString = "('" & celija1 & "','" & celija2 & "')"
  24.             Else
  25.                 /ako PrintString nije prazan, podaci se nadovezuju pa treba zarez na pocetku
  26.                 PrintString = ",('" & celija1 & "','" & celija2 & "')"
  27.             End If
  28.             Print #FF, PrintString /upisemo PrintString u datoteku
  29.  
  30.         Next red /sljedeci red
  31.  
  32.         Print #FF, ";" /kada smo dosli do kraja upisemo na kraj ;
  33. Close #FF /zatvorimo datoteku za upisivanje
  34.  
  35.  
  36. mozda cete trebati obraditi podatke nakon upisivanja, kao ja, pa onda nastvljate upisivati u istu datoteku
  37. nove podatke.
  38.  
  39. neki kod koji obraduje celije i podatke u excelu
  40.  
  41. Open exportName For Append As #FF
  42.         Print #FF, "INSERT INTO tab_2 (ID, tezina)"
  43.         Print #FF, "VALUES"
  44.        
  45.         For red = 1 To zadnjiRed
  46.             celija1 = Cells(red, 2).Value 'ID
  47.            celija2 = Cells(red, 4).Value 'tezina
  48.  
  49.             If PrintString = "" Then
  50.                 PrintString = "('" & celija1 & "','" & celija2 & "')"
  51.             Else
  52.                 PrintString = ",('" & celija1 & "','" & celija2 & "')"
  53.             End If
  54.             Print #FF, PrintString
  55.            
  56.         Next red
  57.         Print #FF, ";"
Close #FF

nakon sto dobijete izlaznu datoteku jednostavno u phpmyadmin panelu izaberete
Import, odaberete ime_datoteke.sql i pokrenete
stari podaci u tab_1 i tab_2 bice prvo izbrisani a zatim ce se upload novi

i to je to.

mozda je moguce napraviti funkciju upisa podataka, ali to nisam probao.
Jednostavno sam dva puta napisao kod upisa podataka u datoteku.

PreuzmiIzvorni kôd (Visual Basic):
  1. function exportData(prviRed, zadnjiRed, imeDatoteke, data_1, data_2)
  2.        
  3.         Open imeDatoteke For Append As #FF
  4.                 Print #FF, "INSERT INTO tab_2 (data_1, data_2)"
  5.                 Print #FF, "VALUES"
  6.        
  7.                 For red = prviRed To zadnjiRed
  8.                     celija1 = Cells(red, 2).Value 'ID
  9.                     celija2 = Cells(red, 4).Value 'tezina
  10.  
  11.                     If PrintString = "" Then
  12.                         PrintString = "('" & celija1 & "','" & celija2 & "')"
  13.                     Else
  14.                         PrintString = ",('" & celija1 & "','" & celija2 & "')"
  15.                     End If
  16.                        
  17.                         Print #FF, PrintString
  18.            
  19.                 Next red
  20.                 Print #FF, ";"
  21.         Close #FF
  22. end fuction

pozovemo ju sa :

    
PreuzmiIzvorni kôd (Visual Basic):
  1. if exportData(1,20,ime.sql,ID,ime) = False then
  2.                 msgbox "greska u izvozu"
  3.         else
  4.                 msgbox "izvoz uspijesan"
  5.         end if
  6. i
  7.         if exportData(1,20,ime.sql,ID,tezina) = False then
  8.                 msgbox "greska u izvozu"
  9.         else
  10.                 msgbox "izvoz uspijesan"
  11.         end if

naravno da bi trebalo u tome kodu biti jos dosta toga za provjeru gresaka ili nesto drugo ali za jednostavni izvoz meni koristi
zivot je moja domovina.
↑  ↓

#14 27.09.2017 14:56
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: Izvoz iz Excela u MySQL bazu sa datotekom.sql
Ja kod jedne baze koja ima dosta artikala.
Kad ja pravim prenos sa jedne na druge baze koriatim taj nacin prenosa.
Tabela iz servera exportiram csv fajl ona sto ti pravis sa print funkcija,jas za to sam napravio procedura u mssql a onda taj csv importiram u mysql .
Ovaj nacin prenosa je dosta brzi svih ostali prenosa koi sam testirao.
↑  ↓

Stranice (2):1,2


Sva vremena su GMT +01:00. Trenutno vrijeme: 12: 29 pm.