Avatar billede lubbers Nybegynder
24. august 2001 - 10:10 Der er 29 kommentarer og
1 løsning

HASTER !!!!!!!

Jeg skal importere en tekstfil ved hjælp af phpMyAdmin,
Jeg har tre felter i tabel, hvoraf det ene skal være autonummereret. I tekstfilen er der to kolonner.
Jeg bliver ved med at få diverse fejl

MySQL said: Duplicate entry \'0\' for key 1
Point gives først når data er i tabellen.
Avatar billede disky Nybegynder
24. august 2001 - 10:11 #1
så er det fordi der er flere poster der har samme key, og du har valgt key til at være unique

stik mig data, og access til phpmyadmin så skal jeg hurtigt få det ind
Avatar billede wizprod.com Nybegynder
24. august 2001 - 10:11 #2
tre kolonner er ikke det samme som to kolonner!
Avatar billede limemedia Nybegynder
24. august 2001 - 10:12 #3
du bryder nøglefeltet... er du sikker på at din definition af tabellen er korrekt. Kopierer du fra én server til en anden ? hvordan ser dit skema ud ?
Avatar billede wizprod.com Nybegynder
24. august 2001 - 10:12 #4
prøv at poste noget af teksten her..... der kunne evt laves et script der kunne hive dataerne ind i mysql
Avatar billede limemedia Nybegynder
24. august 2001 - 10:18 #5
lubbers ?
Avatar billede lubbers Nybegynder
24. august 2001 - 10:19 #6
Her er udsnit af data + tabel
table cvr has been altered.

SQL-query:
ALTER TABLE cvr CHANGE id id INT (11) DEFAULT \'0\' not null 

Field Type Attributes Null Default Extra Action
id  int(11)    No  0    Change Drop Primary Index Unique
adresse  varchar(255)    Yes      Change Drop Primary Index Unique
cvrnr  int(11)    Yes      Change Drop Primary Index Unique
pnr  int(11)    Yes      Change Drop Primary Index Unique
dato  datetime    Yes      Change Drop Primary Index Unique

Keyname Unique Field Action
PRIMARY Yes id Drop
[Documentation]

Datafil.txt
\"Jernbanevej0043274500\";70595710;0;6-6-2001 08:51:31
\"Askevej0282353660\";13738890;0;6-6-2001 08:58:31
\"Tårnvej3891752610\";19090698;0;6-6-2001 17:16:29
\"Tårnvej3891752610\";25991745;0;6-6-2001 17:16:29
\"Ringstedvej0022654000\";25132335;0;6-6-2001 17:20:48
\"Ringstedvej0022654000\";0;1007341276;6-6-2001 17:20:48
\"Kirke+Værløsevej0261893500\";42577316;0;6-6-2001 22:56:09
\"Kirke+Værløsevej0261893500\";0;1001827479;6-6-2001 22:56:09
\"Læssøegade0054615000\";14174605;0;7-6-2001 10:26:25
Avatar billede wizprod.com Nybegynder
24. august 2001 - 10:27 #7
Din datetime er ikke det rigtige format...

et rigtigt format ville være feks. 2001-08-05 11:25:58
Avatar billede lubbers Nybegynder
24. august 2001 - 10:31 #8
Der er ikke nogle problemer med datoen. Jeg kan godt få data ind i tabellen uden en nøgle, det er ligeså snart jeg gerne vil have et unikt id, at der bliver problemer.
Avatar billede wizprod.com Nybegynder
24. august 2001 - 10:38 #9
$fil = file($Datafil.txt);

for ($i = 0; $i < sizeof($fil); $i++) {
    $spilt = explode(\";\", $fil[$i]);
    mysql_query(\"INSERT INTO cvr(adresse, cvrnr, pnr, dato) VALUES(\'$split[0]\', \'$split[1]\', \'$split[2]\', \'$split[3]\')\");
}

Måske kan du bruge dette her!
Avatar billede limemedia Nybegynder
24. august 2001 - 10:41 #10
lubbers >> opret først din tabel uden idfelt... dernæst tilføl den med
ALTER TABLE cvr ADD `UniqID` INT UNSIGNED not null AUTO_INCREMENT FIRST
Avatar billede mortenfn Nybegynder
24. august 2001 - 10:47 #11
som tidligere sagt dit dato-format duer ikke

dato  datetime    Yes 

du må endre dato til varchar(25) sådan

dato  varchar(25)    Yes 
Avatar billede limemedia Nybegynder
24. august 2001 - 10:50 #12
mortenfn >> say what ? du vil da forhåbentligt ikke tilråde at gemme datoer i varchars !!!!!!!!!!!!
Avatar billede wizprod.com Nybegynder
24. august 2001 - 11:10 #13
er du derude, lubbers?
Avatar billede mortenfn Nybegynder
24. august 2001 - 11:11 #14
ljweb->ØØ næææ - men i dette her tilfelde passer datoformatet jo ikke. når jeg bruger et dansk dato ligger jeg det i tinytext. normalt bruger jeg ikke et dato format jeg bruge phps time() og ligger så tallet i int, hvorefter jeg behandler time() når jeg udskriver.

er det et problem at ligge dether datoformat i en txt
Avatar billede limemedia Nybegynder
24. august 2001 - 11:13 #15
morten >> det er altid et problem... datoer hører hjemme i dato felter så databasen ved hvordan den skal arbejde med dem ! altid og hver gang
Avatar billede mortenfn Nybegynder
24. august 2001 - 11:16 #16
ljweb->OK - hvis du ligger det her datoformat (som i dette spørgsmål) i datetime bliver resultatet jo  0000-00-00 00:00:00 .
Avatar billede limemedia Nybegynder
24. august 2001 - 11:18 #17
morten >> det må der tages højde for under indkøring.
Avatar billede mortenfn Nybegynder
24. august 2001 - 11:19 #18
du beder om Unique - det går vel ikke når data er ens !!


\"Tårnvej3891752610\";19090698;0;6-6-2001 17:16:29
\"Tårnvej3891752610\";25991745;0;6-6-2001 17:16:29
Avatar billede wizprod.com Nybegynder
24. august 2001 - 11:33 #19
desuden, hvis man ikke bruger det rigtige datetime format, vil man heller ikke kunne bruge date()
Avatar billede lubbers Nybegynder
24. august 2001 - 11:35 #20
Nej den er ikke unik, det beder jeg ikke om.
Det er et udsnit fra phpMyAdmin jeg har kopieret.
jeg kan kun få en post ind, hvis jeg opretter id før jeg ligger data ind. Og hvis jeg opretter den efter, melder den fejl.
Avatar billede wizprod.com Nybegynder
24. august 2001 - 11:37 #21
har du prøvet min metode?
Avatar billede lubbers Nybegynder
24. august 2001 - 11:40 #22
Har arbejdet med phpMyAdmin.
Jeg vil prøve dit script nu.
Avatar billede limemedia Nybegynder
24. august 2001 - 11:43 #23
lubbers... hvis du sender mig dit dump skal jeg ordne det og sende det til dig, med fortløbende unikke id\'er !
Avatar billede lubbers Nybegynder
24. august 2001 - 11:59 #24
WIZPROD
Jeg får 98 tomme poster ind, men det er da på vej
<?php
include \"../include/connect.php\";

$fil = file(\"kopicvr.txt\");

for ($i = 0; $i < sizeof($fil); $i++) {
    $spilt = explode(\";\", $fil[$i]);
    mysql_query(\"INSERT INTO cvr(adresse, cvrnr, pnr, dato) VALUES(\'$split[0]\', \'$split[1]\', \'$split[2]\', \'$split[3]\')\");
}
?>

Og der er auto mummerering

Teksten ser således ud
;\"Kirke\";10018110;0;2001-07-04 12:18:16
;\"Kirke\";0;1003529210;2001-07-04 12:18:16
;\"Ølstedvej0047518200\";19511278;0;2001-07-04 12:30:52
;\"Ølstedvej0047518200\";21504483;0;2001-07-04 12:30:52
;\"Ølstedvej0047518200\";0;1004115355;2001-07-04 12:30:52
;\"Ølstedvej0047518200\";0;1004010332;2001-07-04 12:30:52
;\"Kirke+Værløsevej0281893500\";20902094;0;2001-07-04 21:21:49
;\"Kirke+Værløsevej0281893500\";0;1004572893;2001-07-04 21:21:49
;\"Kirke+Værløsevej0281893500\";0;1001430067;2001-07-04 21:21:49
Avatar billede lubbers Nybegynder
24. august 2001 - 12:00 #25
RESULTAT
id adresse cvrnr pnr dato
1      0  0  0000-00-00 00:00:00  Edit Delete
2      0  0  0000-00-00 00:00:00  Edit Delete
3      0  0  0000-00-00 00:00:00  Edit Delete
Avatar billede wizprod.com Nybegynder
24. august 2001 - 12:03 #26
for ($i = 0; $i < sizeof($fil); $i++) {
    $spilt = explode(\";\", $fil[$i]);
    var_dump($spilt);
    mysql_query(\"INSERT INTO cvr(adresse, cvrnr, pnr, dato) VALUES(\'$split[0]\', \'$split[1]\', \'$split[2]\', \'$split[3]\')\");
}


Printer den noget på skærmen?
Avatar billede limemedia Nybegynder
24. august 2001 - 12:35 #27
wizprod >> note ! der er stavefejl i eksemplet !!! du exploder til $spilt og indsætter fra $split ?

lubbers >> wizprods kode rettet for stavefejl
for ($i = 0; $i < sizeof($fil); $i++) {
    $split = explode(\";\", $fil[$i]);
    var_dump($spilt);
    mysql_query(\"INSERT INTO cvr(adresse, cvrnr, pnr, dato) VALUES(\'$split[0]\', \'$split[1]\', \'$split[2]\', \'$split[3]\')\");
}
Avatar billede wizprod.com Nybegynder
24. august 2001 - 12:39 #28
DOH!
Avatar billede lubbers Nybegynder
24. august 2001 - 14:06 #29
Jeg har stadig problemer med dato, men det må jeg leve med lidt endnu.
WIZPROD dit script virker, men jeg måtte endre lidt på split[0]
mysql_query(\"INSERT INTO cvr(adresse, cvrnr, pnr, dato) VALUES(\'$split[1]\', \'$split[2]\', \'$split[3]\',\'$dato\')\");
Tak for hjælper
Avatar billede wizprod.com Nybegynder
24. august 2001 - 14:16 #30
takker for point!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester