Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 30 odgovora
  • 9.086 pregleda

Najnovija ↓

Višestruki Insert u tablici 17.02.2011. u 13:43 · pre 191 mesec #1
Primjetio sam da MS Access baza ne dopušta višestruke insert upite kao npr. MySQL gdje je to sasvim normalna stvar.

Moj problem je što imam oko 65000 sql insert izjava koje bi htio izvršiti čim brže nad Access bazom. Koristim C++ i jedino rješenje mi je petljom izvršavati insert jedan po jedan, a to je zaista jako sporo. Da li je moguće napraviti nekakav sql upit koji bi odjednom ubacio svih tih 65000 zapisa koje ja trebam, a da radi nad MS Accessom?
Re: Višestruki Insert u tablici 17.02.2011. u 15:19 · pre 191 mesec #2
To što si primetio nije posledica INSERT INTO u query-ju već, verovatno da imaš PK nad nekom kolonom u ciljnoj tabeli, te Access ne dozvoljava dupliranje zapisa iz izvorne u ciljnu tabelu, po toj koloni. INSERT INTO radi ineče, upravo to što od nje zahtevaš, bez obzira na broj ponavljanja upita.
Potpis
https://mzahorjanski.wixsite.com/mzahorjanski
https://www.fiverr.com/miroljubzahorja?up_rollout=true
https://www.youtube.com/@miroljubzahorjanski


Re: Višestruki Insert u tablici 17.02.2011. u 15:24 · pre 191 mesec #3
Nije riječ o tome već o jednom query-u koji sadrži više insert naredbi.
Re: Višestruki Insert u tablici 17.02.2011. u 15:49 · pre 191 mesec #5
INSERT INTO Table1 ( ColA ) VALUES (123);
INSERT INTO Table1 ( ColA ) VALUES (456);

Table1 je prazna tablica s ID (autonumber) kao PK.
Re: Višestruki Insert u tablici 17.02.2011. u 15:57 · pre 191 mesec #7
Ne radi niti to. To sve inače radi na nekoj boljoj bazi tipa Mysql Sql server i sl., ali ne i u accessu.
Re: Višestruki Insert u tablici 17.02.2011. u 16:08 · pre 191 mesec #9
Jedino da te vrednosti staviš u tabelu, a onda uradiš INSERT INTO.. SELECT...FROM. Tih 65000 zapisa su verovatno negde u tabeli. To je upravo ono na čega sam prvo pomislio kad si postavio pitanje.
Potpis
https://mzahorjanski.wixsite.com/mzahorjanski
https://www.fiverr.com/miroljubzahorja?up_rollout=true
https://www.youtube.com/@miroljubzahorjanski


Re: Višestruki Insert u tablici 17.02.2011. u 16:13 · pre 191 mesec #10
Nažalost, ja programski (u svojoj EXE aplikaciji) generiram vrijednosti koje onda trebam prebaciti u bazu. Meni nije problem programski generirati bilo kakav sql upit, no prisiljen sam insert upite izvršavati jedan po jedan, a ne sve njih kao dio jednog velikog sql upita.
Re: Višestruki Insert u tablici 17.02.2011. u 17:25 · pre 191 mesec #12
Access mi je nekako najpogodniji jer za njega jedino trebaš DB Jet provider koji je uvijek instaliran u windowsima po defaultu. Za ove druge baze mi je uvijek upitno da li će raditi samo od sebe ili moram klijenta tjerati da još instalira milijun drugih stvari.
Re: Višestruki Insert u tablici 17.02.2011. u 18:56 · pre 191 mesec #13
stavi sql lite i driver za bazu i to je to.

jer ako za bazu koristiš access prepostavljam da će aplikaciju koristiti jedna osoba, onda si mogao cijelu aplikaciju napraviti u access-u.
Re: Višestruki Insert u tablici 17.02.2011. u 19:17 · pre 191 mesec #14
Eh, u tome i jest stvar što ja želim izbjeći instaliranje bilo kakvih drugih drivera, klijenata, servisa itd. Za Access bazu po defaultu je sve uvijek u samim windowsima i sve radi. Čak ne treba imati ni samu MS Access aplikaciju da bi koristio tu bazu.

A sama aplikacija je već stvar za sebe niti ima veze s accessom. Access baza mi samo treba za pohranu podataka.
Re: Višestruki Insert u tablici 17.02.2011. u 19:46 · pre 191 mesec #15
mislim da sql lite nema instalacije nego je samo file koji distribuiraš sa exe file-om kao i driver(dll file).
kad napraviš build sve ti bude recimo u release file-u i to samo proslijediš klijentu.

Re: Višestruki Insert u tablici 18.02.2011. u 12:34 · pre 191 mesec #16
Access ne dopusta visestruki insert ukoliko se radi o vanjskim vrijednostima, medjutim ukoliko se radi o prebacivanju iz tabele u tabelu to je moguce izvesti i to je vec zakljuceno cini mi se.
Ovdje se namece pitanje zasto to treba i jeli za jednokratnu upotrebu?
Ukoliko imamo neke podatke iz druge baze onda nam nije bitna brzina jer cemo to prenijeti mi i to jedanput i nece operater app. to koristiti.
Ukoliko se radi o izracunatim podacima kao sto se to navodi gore onda ne vidim potrebu ih zapisivati jer nevjerujem da racunanje tako dugo traje da se bas mora zapisati zmog toga da nebi opet gubili vrijeme kada nam to zatreba.
Bolje je zapisati parametre na osnovu cega smo to izracunali pa pokrenuti kad. nam zatreba.
Ako to ipak radimo radi prikaza na monitoru (tabelarni prikaz) i to nije razlog jer u c-u moze se to lagano napraviti.

Ako sad i pored ovoga zelis se odluciti da to zapises u bazu onda ne vidim razlog da to bude sporo ako u petlju stavis ovako:
"INSERT INTO ImeTabele(Polje1,Polje2)
VALUES(" Variabl1 "," Variabla2 ")"
Vrijednosti varijabili bi se mijenjale kroz petlju na osnovu koje se dobijaju podaci.

Opet napominjem da ako se radi o izracunatim podacima kako se tvrdi drugoga nacina i nema.
Suludo bi bilo sve te podatke zapamtiti u memoriji pa ih tek po izvrsenju cijelog koda zapisati.

Ako se ipak radi o podacima iz druge baze sto i pretpostavljam i koji su zapisani kao SQL onda ovo gore navedeno bilo izvodivo jer bi kodom vadio vrijednosti iz txt fajla.
Za to se ima potreba ako nisu dostupni ovi podaci na toj (SQL, MySQL) ili nekoj drugoj bazi a ako jesu onda se sa baze boze zapisati file txt koji ima strukturu baze i onda to prihvatati u Access bazi i to ide jednostavno.

Nadam se da sam pomogao.
Potpis
zxz
Re: Višestruki Insert u tablici 18.02.2011. u 14:10 · pre 191 mesec #17
Citat:
izonic:...
Bolje je zapisati parametre na osnovu cega smo to izracunali pa pokrenuti kad. nam zatreba.
Podaci koji se generiraju imaju "random komponentu" pa to nažalost nije moguće...

Npr.: Aplikacija A u jednom trenutku za sve studente slučajnim odabirom generira brojeve zadataka koje pojedini student treba rješiti. Znači, svima su unaprijed poznati njihovi zadaci i u isto vrijeme. Aplikacija B pri validaciji rješenja tih zadataka mora nekako znati koje je zadatke dobio koji student te stoga trebam bazu da to spremim.
Re: Višestruki Insert u tablici 18.02.2011. u 15:33 · pre 191 mesec
izmenjeno 1 put, poslednji put mkaras 19.02.2011. u 01:21
  1. mkaras19.02.2011. u 01:21zapis iz teksta poruke
#18
@itf:
U prvom postu je rečeno da treba oko 65000 inserta u bazu. Koliko je to
vremenski? Koji algoritam koristiš za unos podataka?
Pošto si rekao da koristiš C++ pretpostavljam da koristiš i ADO
biblioteku tako da nema nikakvih problema da se konektuješ na bazu,
otvotiš tabelu, u petlji uneseš šta hoćeš, zatvoriš tabelu i
diskonektuješ bazu i gotovo.Od toga brže ne može.
Ne vidim razlog da insistaraš na SQL-u
Re: Višestruki Insert u tablici 18.02.2011. u 16:16 · pre 191 mesec #19
Vremenski traje par minuta jer, kao što sam gore napisao, sekvencijalno izvršavam jedan po jedan sql upit. Zato i tražim rješenje da odjednom (ili barem nekako brže) sve prenesem u bazu.
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme