Avatar billede straszek Praktikant
02. juli 2008 - 20:20 Der er 7 kommentarer og
2 løsninger

tilpasning af import script

Hej,

Jeg bruger nedenståenden script til at importere data fra et exzcel-csc ark til mysql, og det virker næsten med jeg har brug for lidt hjælp til 2 ting.

1: Hvordan kan jeg få scriptet til at "spring" den første række over, da denne indeholder feltnavnene
2: æåø bliver ikke vist korrekt

Scriptet:
<?

/********************************************************************************************/
/* Code at http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/* Edit the entries below to reflect the appropriate values
/********************************************************************************************/
$databasehost = "localhost";
$databasename = "test";
$databasetable = "sample";
$databaseusername ="test";
$databasepassword = "";
$fieldseparator = ",";
$lineseparator = "\n";
$csvfile = "E:\Webcache\AA ONLINE\test1\english1.csv";
/********************************************************************************************/
/* Would you like to add an ampty field at the beginning of these records?
/* This is useful if you have a table with the first field being an auto_increment integer
/* and the csv file does not have such as empty field before the records.
/* Set 1 for yes and 0 for no. ATTENTION: don't set to 1 if you are not sure.
/* This can dump data in the wrong fields if this extra field does not exist in the table
/********************************************************************************************/
$addauto = 0;
/********************************************************************************************/
/* Would you like to save the mysql queries in a file? If yes set $save to 1.
/* Permission on the file should be set to 777. Either upload a sample file through ftp and
/* change the permissions, or execute at the prompt: touch output.sql && chmod 777 output.sql
/********************************************************************************************/
$save = 1;
$outputfile = "output.sql";
/********************************************************************************************/


if(!file_exists($csvfile)) {
    echo "File not found. Make sure you specified the correct path.\n";
    exit;
}

$file = fopen($csvfile,"r");

if(!$file) {
    echo "Error opening data file.\n";
    exit;
}

$size = filesize($csvfile);

if(!$size) {
    echo "File is empty.\n";
    exit;
}

$csvcontent = fread($file,$size);

fclose($file);

$con = @mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
@mysql_select_db($databasename) or die(mysql_error());

$lines = 0;
$queries = "";
$linearray = array();

foreach(split($lineseparator,$csvcontent) as $line) {

    $lines++;

    $line = trim($line," \t");
   
    $line = str_replace("\r","",$line);
   
    /************************************************************************************************************
    This line escapes the special character. remove it if entries are already escaped in the csv file
    ************************************************************************************************************/
    $line = str_replace("'","\'",$line);
    /***********************************************************************************************************/
   
    $linearray = explode($fieldseparator,$line);
   
    $linemysql = implode("','",$linearray);
   
    if($addauto)
        $query = "insert into $databasetable values('','$linemysql');";
    else
        $query = "insert into $databasetable values('$linemysql');";
   
    $queries .= $query . "\n";

    @mysql_query($query);
}

@mysql_close($con);

if($save) {
   
    if(!is_writable($outputfile)) {
        echo "File is not writable, check permissions.\n";
    }
   
    else {
        $file2 = fopen($outputfile,"w");
       
        if(!$file2) {
            echo "Error writing to the output file.\n";
        }
        else {
            fwrite($file2,$queries);
            fclose($file2);
        }
    }
   
}

echo "Found a total of $lines records in this csv file.\n";


?>
Avatar billede jakobdo Ekspert
02. juli 2008 - 22:31 #1
Jeg spørger selvfølgelig nok dumt, men er der en grund til du ikke benytter:
http://dk.php.net/manual/en/function.fgetcsv.php

til at behandle csv filen ?
Avatar billede straszek Praktikant
03. juli 2008 - 08:01 #2
nu var det lige det ovenstående script jeg faldt over, og det kunne det, det skulle kunne, udtagen de to ting som jeg beder om hjæp til

Nogle bud?
Avatar billede jakobdo Ekspert
03. juli 2008 - 21:45 #3
Burde følgende ikke gøre det:

$linearray = explode($fieldseparator,$line);
unset($linearray[0]); //HACK
$linemysql = implode("','",$linearray);
Avatar billede straszek Praktikant
04. juli 2008 - 19:33 #4
Det virker ikke bruges ovenstående, bliver intet importeret; Problemet kan dog løses ved at lave en ikke særlig smuk, mysql delete efter import, på den første række.

Noget bud på havd der kan gøres når ÆØÅæøå bliver til ®¯¾¿Œ  ?
Avatar billede jakobdo Ekspert
04. juli 2008 - 22:22 #5
Prøv at lave en
echo '<pre>';
print_r($linearray);
echo '</pre>';

Hvad smider den ud ?
Avatar billede straszek Praktikant
29. oktober 2008 - 13:39 #6
måtte brugen en anden fregangsmåde - hvis du vil have point så smid et svar
Avatar billede jakobdo Ekspert
29. oktober 2008 - 13:48 #7
Du kan få et svar, så kan du vurdere om jeg skal have point.
Avatar billede straszek Praktikant
29. oktober 2008 - 16:28 #8
vi kan dele
Avatar billede jakobdo Ekspert
29. oktober 2008 - 19:17 #9
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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