Topic: CSV importavimas su phpMyAdmin nesigauna

Bandau ikelti duomenu i jau egzistuojancia lentele su phpmyadmin. Bet nieko nesigauna, paraso tokia tokia lentele didele su apacioje Create PHP, kai paspaudziu jy, po to spaudziu execute Query, ir ismeta klaida #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT IGNORE INTO `products` VALUES ('NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'N' at line 1.   Ka darau ne taip? Ka reikia pataisyt CSV faile?

Re: CSV importavimas su phpMyAdmin nesigauna

Pradžiai parodyk pirmas tris CSV failo eilutes.

Paskui rekomenduoju nesinaudoti PMA (phpMyAdmin), o pabandyti viską padaryti naudojantis vienas SQL užklausa (LOAD DATA INFILE: http://dev.mysql.com/doc/refman/4.1/en/load-data.html).

Re: CSV importavimas su phpMyAdmin nesigauna

3 pirmos eilutes:
id    date_entered    date_modified    modified_user_id    assigned_user_id    deleted    name    description    created_by    availability    category    contact    contact_id    cost    date_available    manufacturer    manufacturer_id    mfr_part_num    price    supplier    supplier_id    type    vendor_part_num
NULL    NULL    NULL    NULL    NULL    NULL    STORAGE CABINET    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    291-4ESD    NULL    NULL    NULL    NULL    NULL
NULL    NULL    NULL    NULL    NULL    NULL    STORAGE CABINET    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    290-3    NULL    NULL    NULL    NULL    NULL

Re: CSV importavimas su phpMyAdmin nesigauna

O gal gali papasakot placiau truputi kaip ta load data funkcija naudotis, nes as visiskai zalias sql'e ir noreciau truputi pramokti. Aciu

Re: CSV importavimas su phpMyAdmin nesigauna

Kokia MySQL versija?
Kokia PMA versija?
Kokia lentelės struktūra?

Ta klaida, kurią gavai nieko rimto nesako, nes gali būti, kad tiesiog tau PMA kažką netaip sugeneravo ir neteisingai vykdė. Kaip ir rašiau anksčiau rekomenduoju pamiršti tą PMA ir pasiskaityti dokumentaciją apie LOAD DATA INFILE komandą, ir jos pagalba susikrauti visą CSV'ą.

Re: CSV importavimas su phpMyAdmin nesigauna

ratas wrote:

O gal gali papasakot placiau truputi kaip ta load data funkcija naudotis, nes as visiskai zalias sql'e ir noreciau truputi pramokti. Aciu

Na tai kur daviau linką, yra pilna dunkcijos dokumentacija, su pavyzdžiais. Jeigu esi visiškai žalias tai derėtų pradėti nuo pagrindų, o ne nuo sudėtingų dalykų.

7 (edited by ratas 2007-11-09 11:58:44)

Re: CSV importavimas su phpMyAdmin nesigauna

minde wrote:
ratas wrote:

O gal gali papasakot placiau truputi kaip ta load data funkcija naudotis, nes as visiskai zalias sql'e ir noreciau truputi pramokti. Aciu

Na tai kur daviau linką, yra pilna dunkcijos dokumentacija, su pavyzdžiais. Jeigu esi visiškai žalias tai derėtų pradėti nuo pagrindų, o ne nuo sudėtingų dalykų.

Na tai manau ikelti duomenis i lentele ir yra pagrindai, tai meginau padaryti paprasciausiu budu phpmyadmin pagalba, bet nesigavo..

Mysql versija 5.0.32, visa kita sistema Apache/2.2.3 (Debian) mod_python/3.2.10 Python/2.4.4 PHP/5.2.0-8+etch7 mod_perl/2.0.2 Perl/v5.8.8 Server at

Re: CSV importavimas su phpMyAdmin nesigauna

Pagrindai yra vieno užklausos pagalba įrašyti vienos eilutės duomenis į lentelė. Pagrindai yra lentelės struktūra, tipai, elementarūs SELECT'ai. Skaitymas iš failo, rašymas į failą.

PMA yra trečių šalių įrankis, kuris stovi tarp tavęs ir duomenų bazės ir daro neaiškų ką ir pan. Konkrečiai aš pats jį naudoju minimaliai ir labai dėl jo konsultuoti negaliu.

LOAD DATA INFILE yra ne elementarus dalykas, nes reikia kažkiek jau nusimanyti kap veikia kliento-serverio architektūra, kaip CSV organizuojami duomenys, kaip atskiriamos eilutės ir stulpeliai, kokia yra MySQL sintaksė ir ką sako klaidų pranešimai.

Re: CSV importavimas su phpMyAdmin nesigauna

Na pameginau su tom funkcijom, stai kas gaunasi, gal kas gali pakomentuoti kur klaida?
INSERT INTO products( name )
VALUES (
'Spike'
), (
'Chip'
), (
'John'
)

MySQL said: Documentation
#1062 - Duplicate entry '' for key 1

Re: CSV importavimas su phpMyAdmin nesigauna

Tikriausiai lentelėje yra daugiau stulpelių, negu tik "name", tokiu atveju MySQL'as į nenurodytus stulpelius deda reikšmes pagal nutylėjimą (default). Kadangi pas tave vienas iš tų stulpelių yra indeksas (KEY) tai jame negalimos pasikartojančios reikšmės. šiuo atveju pasikartoja tučšia reikšmė (NULL, "").

Re: CSV importavimas su phpMyAdmin nesigauna

minde wrote:

Tikriausiai lentelėje yra daugiau stulpelių, negu tik "name", tokiu atveju MySQL'as į nenurodytus stulpelius deda reikšmes pagal nutylėjimą (default). Kadangi pas tave vienas iš tų stulpelių yra indeksas (KEY) tai jame negalimos pasikartojančios reikšmės. šiuo atveju pasikartoja tučšia reikšmė (NULL, "").

Aga aisku. O tad kaip galeciau ispresti sita dalyka? Kaip parasyti kad ignoruotu tuos tuscius ir detu ik i ta lentele ka parasiau o tuscius ir paliktu null?

Re: CSV importavimas su phpMyAdmin nesigauna

ratas wrote:

Aga aisku. O tad kaip galeciau ispresti sita dalyka? Kaip parasyti kad ignoruotu tuos tuscius ir detu ik i ta lentele ka parasiau o tuscius ir paliktu null?

Visų pirma reikia suvokti skyrtumą tarp tikrosios NULL reikšmės ir tap žodžio/eilutės (string) "NULL". Nes abiem atvejais MySQL interpretuoja paduodamus duomenis skirtingai:
http://dev.mysql.com/doc/refman/4.1/en/null-values.html
http://dev.mysql.com/doc/refman/4.1/en/ … -null.html

Dėl dublikuotų reikšmių tai gal aš tik neteisingai parašiau, kad indeksuotų stulpelių reikšmės negali kartotis. Kartotis negali pirminis raktas (PRIMARY KEY) bei unikalus indeksas (UNIQUE). O standartinis indeksas gali. Tavo atveju pranešime tik paminėtas, kad kartojasi pirmojo rakto reikšmė. Kad to išvengti rekomenduočiau arba panaikinti tą raktą arba sušvelninti jo apibrėžimą:

PRIMARY KEY pakeisti į INDEX
ir/arba UNIQUE pakeisti į INDEX

Bet či tik tuo atveju, jeigu tai tikrai nepakenks duomenų naudojimui ir supranti ką duoda unikalus laukas duomenų bazėje ir ką duoda jo neturėjimas.

Re: CSV importavimas su phpMyAdmin nesigauna

minde wrote:
ratas wrote:

Aga aisku. O tad kaip galeciau ispresti sita dalyka? Kaip parasyti kad ignoruotu tuos tuscius ir detu ik i ta lentele ka parasiau o tuscius ir paliktu null?

Visų pirma reikia suvokti skyrtumą tarp tikrosios NULL reikšmės ir tap žodžio/eilutės (string) "NULL". Nes abiem atvejais MySQL interpretuoja paduodamus duomenis skirtingai:
http://dev.mysql.com/doc/refman/4.1/en/null-values.html
http://dev.mysql.com/doc/refman/4.1/en/ … -null.html

Dėl dublikuotų reikšmių tai gal aš tik neteisingai parašiau, kad indeksuotų stulpelių reikšmės negali kartotis. Kartotis negali pirminis raktas (PRIMARY KEY) bei unikalus indeksas (UNIQUE). O standartinis indeksas gali. Tavo atveju pranešime tik paminėtas, kad kartojasi pirmojo rakto reikšmė. Kad to išvengti rekomenduočiau arba panaikinti tą raktą arba sušvelninti jo apibrėžimą:

PRIMARY KEY pakeisti į INDEX
ir/arba UNIQUE pakeisti į INDEX

Bet či tik tuo atveju, jeigu tai tikrai nepakenks duomenų naudojimui ir supranti ką duoda unikalus laukas duomenų bazėje ir ką duoda jo neturėjimas.

Na taip kaipo suprantu kad pas mane key nustatytas yra mano atveju stulpelis su reiksmem ID kurios turi buti unikalios, bet tai kokiu budu tuomet man ikelti i DB dideli kieki duomenu..

Re: CSV importavimas su phpMyAdmin nesigauna

ratas wrote:

Na taip kaipo suprantu kad pas mane key nustatytas yra mano atveju stulpelis su reiksmem ID kurios turi buti unikalios, bet tai kokiu budu tuomet man ikelti i DB dideli kieki duomenu..

Pabandyk tą ID stulpelį nustatyti auto_increment - tokiu būdu jam bus automatiškai sukuriamos  unikalios reikšmės (automatiškai didėjanti reikšmė).