Avko 01.09.2017 14:58
Predmet:Izvoz iz Excela u MySQL bazu sa datotekom.sql

htio bi sljedeci SQL kod staviti u txt dokument i napraviti uvoz u mysql pa da se to sve izvrsi ali sam zapeo

PreuzmiIzvorni kôd (Text):
  1. TRUNCATE 'skladiste'; //ispraznim tablu skladiste
  2. INSERT INTO 'skladiste' ('kg', 'naziv')
  3. VALUES
  4. ('10','jabuka'),
  5. ('15','kruska'),
  6. ('40','sljiva');

evo ja ovaj gore dokument kad ga snimim kao uvoz.txt i onda izaberem u myadminsql uvoz ne izvrsi mi.

Znate li zasto je to tako?

zxz 01.09.2017 16:42
Predmet:Re: Uvoz Podataka - Sql Naredbe

Nisi opisao nacin pokretanja. Kazes ne izvrsi.
Jeli pozoves ovaj sql ili kako to radis.
Sto se tice koda izgleda mi dobro.

Avko 01.09.2017 21:30
Predmet:Re: Uvoz Podataka - Sql Naredbe

Izaberem uvoz na mypanelu od mysql baze. To se koristi i kada uvozis csv file sa podacima. To je ona tipka pored export tipke. Kada kliknem na import odaberem datoteku sa racunala onda odaberem sql i kliknem na GO ali javi gresku

zxz 01.09.2017 21:53
Predmet:Re: Uvoz Podataka - Sql Naredbe

A jesil probao u Prozoru za pisanje Mysql copy paste radil tu.

Avko 01.09.2017 21:59
Predmet:Re: Uvoz Podataka - Sql Naredbe

E to nisam

Gjoreski 02.09.2017 00:54
Predmet:Re: Uvoz Podataka - Sql Naredbe

Kao txt nisam probao ali kao sql script to sam probao i radi,imao sam ja neka ovakva scripta za stvarajne baza,mogu potraziti ali posle vikenda.

Avko 02.09.2017 12:01
Predmet:Re: Uvoz Podataka - Sql Naredbe

Citiraj Gjoreski:
Kao txt nisam probao ali kao sql script to sam probao i radi,imao sam ja neka ovakva scripta za stvarajne baza,mogu potraziti ali posle vikenda.

u redu

rucno sam uneo i javilo mi gresku:

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 472028 bytes) in C:\wamp\phpmyadmin\libraries\sqlparser.lib.php on line 331

MsvK 02.09.2017 12:51
Predmet:Re: Uvoz Podataka - Sql Naredbe

Probaj da importas neku drugu bazu cisto da testiras pa javi jer mislim da imas problema sa myadminom

Avko 03.09.2017 13:49
Predmet:Re: Uvoz Podataka - Sql Naredbe

evo, greska je bila u ovim znakovima koji izgledaju kao pola navodnika (kako se oni zovu? ASCII=39)

PreuzmiIzvorni kôd (Text):
  1. TRUNCATE TABLE skladiste; =>trebalo je maknuti navodnike okoskladista i ubaciti TABLE
  2. INSERT INTO skladiste (kg, naziv) => i tu sam maknuo te pola navodnike
  3. VALUES
  4. ('10','jabuka'), => ovdje ti polaNavodnici moraju biti
  5. ('15','kruska'),
  6. ('40','sljiva');

datoteku sam snimio kao ime.sql, a ne ime.txt

mislim da se kod imena tabli koriste oni zarezi koji su ukoso a nalaze se gore kao navodnici (opet neznam kako se zovu ASCII=96).

Avko 27.09.2017 14:41
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