sql >> Databáze >  >> RDS >> Mysql

Práce s ukazateli souborů na csv

  1. Je fgets() nejlepší k tomu použít? Je to dobrý způsob, jak to udělat. Další možností je načíst celý soubor do pole pomocí file() , pak smyčku přes pole pomocí foreach() .

  2. Musím začlenit zpětné volání? Ne. Stačí provést dotaz po přečtení každé dávky řádků ze souboru.

  3. Kde začít? Když čítač dosáhne velikosti dávky, proveďte dotaz. Poté nastavte počítadlo zpět na 0 a nastavte řetězec dotazu zpět na počáteční hodnotu. Nakonec na konci cyklu budete muset provést dotaz se zbývajícími hodnotami (pokud velikost souboru nebyla přesným násobkem velikosti dávky, v takovém případě nezůstane nic).

$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. Jak CRC32 funguje v MariaDB

  2. JDBC ve skriptu Google Apps. Výjimka:Výpis zrušený z důvodu vypršení časového limitu nebo požadavku klienta

  3. Co je ekvivalentem „popsat tabulku“ na serveru SQL?

  4. Jak najdu řetězec v databázi SQL Serveru?