sql >> データベース >  >> RDS >> Mysql

外部FTPサイトからcsvファイルをインポートします

    問題を解決したコードを投稿するだけだと思いました。外部FTPサイトからローカルサーバーにcsvファイルをダウンロードします。次に、csvファイルをローカルのmysqlデータベーステーブルにインポートします。インポートされると、ftpサーバー上のファイルは削除されます。このジョブをcronjobを使用してcpanelでスケジュールします。

    スクリプトのクレジットを取得できません。別のサイトで見つかったスクリプトを変更したばかりです。エラーチェックを行うことで、これを行うためのより良い方法があると確信しています。ただし、これは限られたスキルでできる最善の方法です。

    これが同じ問題で将来の訪問者を助けることを願っています。私を助けてくれたすべての人に感謝します。私が使用したコードは次のとおりです。

    <?php
    
    $source = "DespGoods.csv";
    $target = fopen("DespGoods.csv", "w");
    $conn = ftp_connect("ftp.server.com") or die("Could not connect");
    
    ftp_login($conn,"ftpusername","ftppassword");
    ftp_fget($conn,$target,$source,FTP_ASCII);
    
    echo "file downloaded.\n";
    
    /********************************/
    /* Code at http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
    /* Edit the entries below to reflect the appropriate values
    /********************************/
    $dbhost = "localhost";
    $dbname = "dbname";
    $dbtable = "despgoods";
    $dbusername ="dbusername";
    $dbpassword = "dbpassword";
    $fieldseparator = ",";
    $lineseparator = "\n";
    $csvfile = "DespGoods.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 = 0;
    $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($dbhost,$dbusername,$dbpassword) or die(mysql_error());
    @mysql_select_db($dbname) 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 $dbtable values('','$linemysql');";
        }
        else {
            $query = "insert into $dbtable 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";
    
    $source = "DespGoods.csv";
    $target = fopen("DespGoods.csv", "w");
    $conn = ftp_connect("ftp.server") or die("Could not connect");
    
    ftp_login($conn,"ftpusername","ftppassword");
    ftp_delete($conn,$source);
    ftp_close($conn);
    
    echo "file deleted";
    mysql_close($con);
    
    ?>
    


    1. 3番目にグループ化された場合の別のフィールドの最小値に基づくMySQL更新フィールド

    2. JavaでJTableを使用してMySQLデータベースからレコードを表示する

    3. SQL Serverで親テーブル、参照テーブル、外部キー制約の名前と列を取得する方法-SQL Server/TSQLチュートリアルパート71

    4. クエリでテーブル名を動的にする方法はありますか?