Script PHP pour convertir des fichiers dbase en csv

Fermé
Seb - 20 mai 2016 à 15:39
 Seb - 22 mai 2016 à 13:58
Salut à tous,
Dans le cadre de la création d'un site web, je dois convertir des fichiers dbase en csv afin de les importer dans woocommerce de wordpress, je suis malheureusement perdu pour faire cela, car ça dois ce faire une fois par jour de manière automatique, si quelqu'un a une idée je suis preneur :)
Merci par avance!
A voir également:

3 réponses

Utilisateur anonyme
21 mai 2016 à 00:33
Bonjour

Ne te contente pas d'un script qui écrit des champs séparés par des ";", car le csv n'est pas aussi simple que ça. Adapte (en fait, simplifie) le code de nicelife90 pour utiliser la fonction fputcsv qui est faite pour ça.
3
nicelife90 Messages postés 615 Date d'inscription vendredi 24 septembre 2010 Statut Membre Dernière intervention 10 avril 2018 151
20 mai 2016 à 22:47
Bonjour,

Peut être quelque chose du genre :

set_time_limit( 24192000 );
ini_set( 'memory_limit', '-1' );

$files = glob( '/path/to/*.DBF' );
foreach( $files as $file )
{
    echo "Processing: $file\n";
    $fileParts = explode( '/', $file );
    $endPart = $fileParts[key( array_slice( $fileParts, -1, 1, true ) )];
    $csvFile = preg_replace( '~\.[a-z]+$~i', '.csv', $endPart );

    if( !$dbf = dbase_open( $file, 0 ) ) die( "Could not connect to: $file" );
    $num_rec = dbase_numrecords( $dbf );
    $num_fields = dbase_numfields( $dbf );

    $fields = array();
    $out = '';

    for( $i = 1; $i <= $num_rec; $i++ )
    {
        $row = @dbase_get_record_with_names( $dbf, $i );
        $firstKey = key( array_slice( $row, 0, 1, true ) );
        foreach( $row as $key => $val )
        {
            if( $key == 'deleted' ) continue;
            if( $firstKey != $key ) $out .= ';';
            $out .= trim( $val );
        }
        $out .= "\n";
    }

    file_put_contents( $csvFile, $out );
}

1
Merci beaucoup pour vos réponses ! Je vais voir ça de plus près
0