使用进度条导入CSV

时间:2014-11-10 14:01:20

标签: php jquery mysql pdo

我使用此脚本将csv文件导入mysql数据库。

如何使用jquery和php显示用于将csv文件导入db的进度条?

我不需要实际的代码,只需要一些信息。

提前致谢。

    if ( $request->get( $_POST["action"] ) == "import" ) {

        $file = $upload->file_upload( "import", "media/import" );

        if ( file_exists( DIR_UPLOAD_PHOTO . "/media/import/" . $file ) ) {

            $file   = DIR_UPLOAD_PHOTO . "/media/import/" . $file;

            try {
                $dbh = new PDO("mysql:host=".HOST."; dbname=".DATABASE, USER, PASSWORD);

            }
            catch(PDOException $e) {
                echo $e->getMessage();
            }

            $handle = fopen( $file, "r" );
            $delimiter = '|';

            $dbh->beginTransaction();


            $stmt = $dbh->prepare("INSERT INTO products SET title = :title, price = :price
                                               ON DUPLICATE KEY UPDATE 
                                                           title = :title, price = :price"
            );


            fgets($handle);

            $rows = count(file($file));

            while ($line = fgetcsv($handle, 1000, $delimiter)) {

                    $line = array_map('trim', $line);


                    $stmt->bindParam(':title',          $line[0], PDO::PARAM_STR);
                    $stmt->bindParam(':price',          $line[1], PDO::PARAM_STR);

                    $stmt->execute();


            }


            $dbh->commit();
            fclose($handle);
            $dbh = null;


        }
    }

1 个答案:

答案 0 :(得分:0)

最后在MariaDB中,您可以通过这种方式获得一些状态信息(不知道它是否也适用于MySQL):

  • INSERT INTO ...语句分散到其他进程中
  • 并运行它。
  • 在主线程中使用SHOW PROCESSLIST获取INSERT声明的状态。