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

PHPを使用してCSVをデータベースにアップロードする

    タスクを実行するために必要な基本的なコードは次のとおりです。

    $file = fopen($_FILES['csvUpload']['tmp_name'], "r");
    $i = 0;
    while (!feof($file)) {
        $value = (fgetcsv($file, 0, ';'));
        if ($i > 0) {
            if ($value[0] != '') {
                $inserts[] = "(" . $value[0] . ","
                        . $value["1"] . ","
                        . $value["2"] . ","
                        . $value["3"] . ","
                        . $value["4"] . ","
                        . $value["5"] . ","
                        . $value["6"] . ")";
            }
        } elseif ($i == 0) {
            $fields = $value;
        }
        $i++;
    }
    
    mysql_query("INSERT INTO `MyTable` (`" . $fields[0] . "`,`" . $fields[1] . "`,`" . $fields[2] . "`,`" . $fields[3] . "`,`" . $fields[4] . "`,`" . $fields[5] . "`) VALUES " . implode(",", $inserts));
    
    fclose($file);
    

    検証を実装し、ファイルタイプとサイズ制限を確認する必要があります。次に、データをテーブルに挿入します。大量のデータを処理するためにMySQLバルクインサートを使用しています。これがお役に立てば幸いです!

    編集1:

    コードをこのコードに置き換えて、正しく機能しているかどうかを確認してください。

    <?php
    error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_WARNING);
    
    mysql_connect('localhost', 'root', '');
    mysql_select_db("proyecto") or die(mysql_error());
    
    if (isset($_FILES['csvUpload'])) {
        $errors = array();
        $allowed_ext = array('.csv');
    
        $file_name = $_FILES['csvUpload']['name'];
        $file_ext = strtolower(end(explode('.', $file_name)));
        $file_size = $_FILES['csvUpload']['size'];
        $file_tmp = $_FILES['csvUpload']['tmp_name'];
    
        if (in_array($allowed_ext) === false) {
            $errors[] = 'La extensión del archivo no es valida.';
        }
        if ($file_size > 10485760) {
            $errors[] = 'El archivo sobrepasa el limite de 10MB';
        }
        if (empty($errors)) {
    
    
            $handle = fopen($file_tmp, "r");
            while (($fileop = fgetcsv($handle, ";") && fgetcsv($handle, ",")) !== false) {
                $cedula = mysql_real_escape_string($fileop[0]);
                $nombre = mysql_real_escape_string($fileop[2]);
                $apellido1 = mysql_real_escape_string($fileop[3]);
                $apellido2 = mysql_real_escape_string($fileop[4]);
                $correo = mysql_real_escape_string($fileop[5]);
                $idRol = mysql_real_escape_string($fileop[6]);
                $estado = mysql_real_escape_string($fileop[9]);
    
    
                $sq1 = mysql_query("INSERT INTO `usuarios` (cedula,nombre,apellido1,apellido2,correo,idRol,estado) VALUES ('$cedula','$nombre','$apellido1','$apellido2','$correo','$idRol','$estado')");
            }
            fclose($handle);
            if ($sq1) {
                echo '¡Los usuarios han sido agregados exitosamente!';
            }
        }
    }
    ?>
    
    
    
    <form enctype="multipart/form-data" method="post" id="uploadForm">
        <input name="csvUpload" id="upload" type="file" accept=".csv" class="left" />
        <input type="submit" value="¡Cargar!" />
    </form>
    


    1. ボトル、SQLAlchemy、TwitterAPIを使用したシンプルなWebアプリの構築

    2. タイムスタンプのフォーマット

    3. 既存のRailsアプリをherokuに移動するにはどうすればよいですか? (sqliteからpostgresへ)

    4. 合計の問題によるMySQLの結合テーブルグループ