Avatar billede intim Nybegynder
18. oktober 2001 - 13:38 Der er 15 kommentarer og
1 løsning

import af poster

Jeg har en komma-separeret txt fil med 3 rækker og ca. 800.000 kolonner.

Disse poster skal jeg have importeret i min MySQL.

Hvad vil I anbefale?

Nogle gode råd?
Avatar billede doeleman Nybegynder
18. oktober 2001 - 13:45 #1
Avatar billede mortenfn Nybegynder
18. oktober 2001 - 14:57 #2
3 rækker og 800.000 kolonner er det ikke omvendt snare 800000 rækker og 3 kolonner
Avatar billede intim Nybegynder
18. oktober 2001 - 15:19 #3
bagatel ! ;)

..men jep!
Avatar billede safl Nybegynder
18. oktober 2001 - 17:37 #4
Brug phpMyAdmin, det kan downloades her:
http://www.phpwizard.net/projects/phpMyAdmin/

Og er en genial application til vedligeholdelse af din database!

mvh safl
Avatar billede mortenfn Nybegynder
18. oktober 2001 - 18:11 #5
<?
include(\"mysqlcon.inc\");
mysql_connect($sql_host,$sql_user,$sql_passwd);
mysql_select_db($db);

$ny_tabel=\"nytabel\";
$fil_navn=\"test.txt\";

mysql_query(\"DROP TABLE IF EXISTS $ny_tabel\");
mysql_query(\"CREATE TABLE $ny_tabel (id tinyint(4) NOT NULL auto_increment, row1 text NOT NULL,row2 text NOT NULL,KEY id (id))\");

$indhold=file(\"$fil_navn\");
for($t=0;$t<count($indhold);$t++){
$opdelip=explode(\";\",$indhold[$t]); 
echo \"$opdelip[0].$opdelip[1].$opdelip[2]<br>\";
mysql_query(\"INSERT INTO $ny_tabel VALUES(\'$opdelip[0]\',\'$opdelip[1]\',\'$opdelip[2]\')\");
}
?>

den her klarede ca 2000 rækker på ca. 1 sec.

/mortenfn ;O)
Avatar billede mortenfn Nybegynder
18. oktober 2001 - 18:12 #6
vær opnærksom på denne linje jeg bruger ; og ikke , du kan bare tilrette
Avatar billede intim Nybegynder
23. oktober 2001 - 12:35 #7
....beklager jeg ikke har svaret jer før nu, jeg fik mig lige en søn i fredags.

jeg får kigget nærmere på jeres forslag snarligt!
Avatar billede intim Nybegynder
23. oktober 2001 - 13:31 #8
Morten -> Er det cgi? ...jeg understøtter kun asp
safl -> Jeg har allerede phpMyAdmin!
doeleman -> Interessant men forvirrende!
Avatar billede doeleman Nybegynder
23. oktober 2001 - 16:33 #9
Tillykke med sønnen!!!

Mortens script er et phpscript. Hvis du allerede har phpMyAdmin må du kunne køre PHP, da det er en php-applikation!

Jeg vil dog stadig mene, at LOAD DATA INFILE er den bedste løsning. Hvad forvirer dig?
Avatar billede safl Nybegynder
23. oktober 2001 - 22:22 #10
Tillykke med sønnen!

Hvorfor bruger du så ikke PhpMyAdmin til at importere posterne?
Avatar billede mortenfn Nybegynder
23. oktober 2001 - 22:31 #11
Tillykke med sønni, jeg ved hvor glad og overvældet du er! Jeg har fået 4 af slaksen og 1 pige så jeg kender fornæmmelsen.

Jo mit er i PHP men det er phpMyAdmin jo også.

Jeg håber (ikke) du får mange søvnløse nætter.

;O)
Avatar billede intim Nybegynder
24. oktober 2001 - 10:41 #12
Tak alle sammen!

doeleman -> Jeg er læser og lærer, men har ikke fået det hele med endnu!

safl -> phpMyAdmin giver mig en fejl 403 hver gang jeg prøver.

mortenfn -> Hvis jeg prøver dit eks., så udskrives det bare som tekst? Den udfører ikke noget script?
(...lige for tiden sover han bare som en sten. Det har han nok efter sin far, han har også et godt sovehjerte, men 5 stk. der jeg tager hatten af :)

Avatar billede doeleman Nybegynder
24. oktober 2001 - 16:34 #13
intim>>
Med hensyn til mortenfn\'s script, har du kopiet scriptet ind i en fil, du kalder noget med .php, f.eks. csv.php eller csv.php3 ?
Avatar billede intim Nybegynder
25. oktober 2001 - 12:14 #14
jeg har rette den lidt, og kaldt den db.php, men når jeg kalder siden, så udskriver den:

<?
Server.CreateObject(\"ADODB.Connection\");
mysql_connect($dsn=dis_dsn,$uid=dis_uid,$pwd=dis_pwd);
mysql_select_db($dis);

$ny_tabel=\"distance\";
$fil_navn=\"db/distance.txt\";

mysql_query(\"DROP TABLE IF EXISTS $ny_tabel\");
mysql_query(\"CREATE TABLE $ny_tabel (dis_indeks int(11) NOT NULL auto_increment, dis_fra int(5) NOT NULL,dis_til int(5) NOT NULL,dis_km double(5) NOT NULL,KEY id (id))\");

$indhold=file(\"$fil_navn\");
for($t=0;$t<count($indhold);$t++){
$opdelip=explode(\",\",$indhold[$t]); 
echo \"$opdelip[0].$opdelip[1].$opdelip[2]<br>\";
mysql_query(\"INSERT INTO $ny_tabel VALUES(\'$opdelip[0]\',\'$opdelip[1]\',\'$opdelip[2]\')\");
}
?>
Avatar billede intim Nybegynder
26. oktober 2001 - 10:55 #15
ok! jeg har lavet en slavemodel selv, den er ret langsomlig, men den er skudsikker. Import af txtfilen i access, og så en direkte overførsel fra access til MySQL gennem et script.

doeleman -> Du har ganske ret, det er den rigtige hjælp du er kommet med. Derfor 30 point!

mortenfn -> Jeg er taknemlig for din hjælp, men da jeg desværre ikke har kunne få den til at fungere, må jeg af princip aflønne den, som har peget på det rigtige.

safl -> Du har I princippet ganske ret, men det virker ikke hos mig, da jeg får en blob fejl hver gang jeg prøver. Men eftersom du forslår en allerede afprøvet løsning, er der ingen aflønning.

Alt i alt takker jeg for hjælpen!
Avatar billede safl Nybegynder
26. oktober 2001 - 12:06 #16
intim > fuldt forståeligt, godt at du fik det til at virke.
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