为了账号安全,请及时绑定邮箱和手机立即绑定

使用PHP / MySQL导入CSV数据

使用PHP / MySQL导入CSV数据

精慕HU 2019-09-24 14:30:56
尝试从CSV导入数据时遇到了一些问题,但还有一些问题,我还没有解决。首先,这是我的代码,可以帮助您更好地了解事物(将其整理一些,删除CSS和DB连接):<body><div id="container"><div id="form"><?php$deleterecords = "TRUNCATE TABLE tablename"; //empty the table of its current recordsmysql_query($deleterecords);//Upload Fileif (isset($_POST['submit'])) {    if (is_uploaded_file($_FILES['filename']['tmp_name'])) {        echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded  successfully." . "</h1>";        echo "<h2>Displaying contents:</h2>";        readfile($_FILES['filename']['tmp_name']);    }    //Import uploaded file to Database    $handle = fopen($_FILES['filename']['tmp_name'], "r");    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {        $import="INSERT into importing(text,number)values('$data[0]','$data[1]')";        mysql_query($import) or die(mysql_error());    }    fclose($handle);    print "Import done";//view upload form} else {    print "Upload new csv by browsing to file and clicking on Upload<br />\n";    print "<form enctype='multipart/form-data' action='upload.php' method='post'>";    print "File name to import:<br />\n";    print "<input size='50' type='file' name='filename'><br />\n";    print "<input type='submit' name='submit' value='Upload'></form>";}?></div></div></body>从本质上讲,这是我对各种方法进行多次尝试后发现的示例的改编。我的CSV有两列数据,第一列是文本,第二列是整数数据库中的表也有两列,第一列称为“文本”,第二列为“数字”所以我的问题是:正在上传的文本只是在每个字段中显示为0,我不确定为什么我一直在阅读有关以“”括起来的数据的信息,如果发生这种情况,我将如何对其进行排序?如何忽略标题等的CSV的前X行?在整个过程中数据格式是否已更改,或者是否可以在图形中使用?例如,一旦放入数据库,小数点会保留小数点吗?我想涵盖了所有内容,在此先感谢您的帮助!编辑:刚刚对10,000条记录上传进行了测试,但出现错误:“致命错误:超过30秒的最大执行时间”有什么想法吗?
查看完整描述

3 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

$i=0;

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

if($i>0){

    $import="INSERT into importing(text,number)values('".$data[0]."','".$data[1]."')";

    mysql_query($import) or die(mysql_error());

}

$i=1;

}


查看完整回答
反对 回复 2019-09-24
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

letsay $ infile = a.csv //需要导入文件。


class blah

{

 static public function readJobsFromFile($file)

{            

    if (($handle = fopen($file, "r")) === FALSE) 

    {

        echo "readJobsFromFile: Failed to open file [$file]\n";

        die;

    }


    $header=true;

    $index=0;

    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) 

    {

        // ignore header

        if ($header == true)

        {

            $header = false;

            continue;

        }


        if ($data[0] == '' && $data[1] == '' ) //u have oly 2 fields

        {

            echo "readJobsFromFile: No more input entries\n";

            break;                        

        }            



        $a      = trim($data[0]);

        $b   = trim($data[1]);                 






        if (check_if_exists("SELECT count(*) FROM Db_table WHERE a='$a' AND b='$b'") === true)

        {


                $index++;

            continue;    

        }            


        $sql = "INSERT INTO DB_table SET a='$a' , b='$b' ";

        @mysql_query($sql) or die("readJobsFromFile: " . mysql_error());            

        $index++;

    }


    fclose($handle);        

    return $index; //no. of fields in database.

function

check_if_exists($sql)

{

$result = mysql_query($sql) or die("$sql --" . mysql_error());

if (!$result) {

    $message  = 'check_if_exists::Invalid query: ' . mysql_error() . "\n";

    $message .= 'Query: ' . $sql;

    die($message);

}


$row = mysql_fetch_assoc ($result);

$count = $row['count(*)'];

if ($count > 0)

    return true;

return false;

}


$infile=a.csv; 

blah::readJobsFromFile($infile);

}

希望这可以帮助。


查看完整回答
反对 回复 2019-09-24
  • 3 回答
  • 0 关注
  • 649 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信