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

csvでのファイルポインタの操作

    1. fgets()です これに使用するのに最適ですか? それはそれを行うための良い方法です。もう1つのオプションは、file()を使用してファイル全体を配列に読み込むことです。 、次にforeach()を使用して配列をループします 。

    2. コールバックを組み込む必要がありますか? いいえ。ファイルから行のすべてのバッチを読み取った後でクエリを実行するだけです。

    3. どこから始めますか? カウンターがバッチサイズに達したら、クエリを実行します。次に、カウンターを0に戻します。 クエリ文字列を初期値に戻します。最後に、ループの最後に、残りの値を使用してクエリを実行する必要があります(ファイルサイズがバッチサイズの正確な倍数である場合を除きます。この場合、残りはありません)。

    $batch_size = 100;
    $counter = 0;
    
    //instead of executing query one by one,
    //let us prepare 1 SQL query that will insert all values from the batch
    
    $sql_prefix ="INSERT INTO workorderstest(id,parentid,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10) VALUES ";
    $values = "";
    
    while (($line = fgets($handle)) !== false) {
        $values .= "($line),";
        $counter++;
        if ($counter == $batch_size) {
            $values = substr($values, 0, strlen($values) - 1);
            $conn->query($sql_prefix . $values) or die($conn->error);
            $counter = 0;
            $values ="";
        }
    }
    if ($counter > 0) { // Execute the last batch
        $values = substr($values, 0, strlen($values) - 1);
        $conn->query($sql_prefix . $values) or die($conn->error);
    }
    


    1. DLL'SqlServerSpatial.dll'を読み込めません

    2. Oracleで作成する前に、テーブルが存在するかどうかを確認してください

    3. SQLServerのVIEWS情報スキーマビューを使用してビュー情報を取得する

    4. 2つの時間値を追加することとの混同