当前位置: 首页 > 面试题库 >

使用PHP / MySQL导入CSV数据

周弘盛
2023-03-14
问题内容

尝试从CSV导入数据时遇到了一些问题,但还有一些问题,我还没有解决。

首先,这是我的代码,可以帮助您更好地了解事物(将其整理一些,删除CSS和DB连接):

<body>
<div id="container">
<div id="form">

<?php
$deleterecords = "TRUNCATE TABLE tablename"; //empty the table of its current records
mysql_query($deleterecords);

//Upload File
if (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有两列数据,第一列是文本,第二列是整数数据库中的表也有两列,第一列称为“文本”,第二列为“数字”

所以我的问题是:

  1. 正在上传的文本只是在每个字段中显示为0,我不确定为什么
  2. 我一直在阅读有关以“”括起来的数据的信息,如果发生这种情况,我将如何对其排序?
  3. 如何忽略标题等的CSV的前X行?
  4. 在整个过程中数据格式是否已更改,或者是否可以在图形中使用?例如,一旦放入数据库,小数点会保留小数点吗?

我想涵盖了所有内容,在此先感谢您的帮助!

编辑:

刚刚对10,000条记录上传进行了测试,但出现错误:

“致命错误:超过30秒的最大执行时间”

有什么想法吗?


问题答案:

前几天,我回答了一个几乎相同的问题:将CSV文件保存到mysql数据库中

MySQL具有一项功能LOAD DATA INFILE,它允许它直接在单个SQL查询中导入CSV文件,而根本不需要通过您的PHP程序在循环中对其进行处理。

简单的例子:

<?php
$query = <<<eof
    LOAD DATA INFILE '$fileName'
     INTO TABLE tableName
     FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
     LINES TERMINATED BY '\n'
    (field1,field2,field3,etc)
eof;

$db->query($query);
?>

就这么简单。

没有循环,没有大惊小怪。和很多 很多 比PHP解析它更快。

MySQL手册页在这里:http :
//dev.mysql.com/doc/refman/5.1/en/load-
data.html

希望能有所帮助



 类似资料:
  • 问题内容: 在此问题的最后,最后的代码终于生效了! 尝试实现这一点使用PHP /MySQL导入CSV数据)。我一定快到了… notes1:我的$ sql直接来自复制/粘贴phpmyadmin(生成php代码),并且在phpmyadmin中运行得很好。 note2:如果我注释$ sql =“ DELETE FROM dbase”行,代码将正常运行(并且表已清除)。 因此,如果我知道我的sql是正确的

  • 问题内容: 我有这样的.csv文件数据 我正在使用以下代码将数据插入数据库 但是什么也没插入;错误在哪里? 问题答案: 如果执行该操作,您会发现查询语法不正确,原因如下: 文件名应该用引号而不是反引号引起来,因为它是字符串文字而不是标识符。 绝对不需要调用在and 和子句中指定分隔符。 您过度使用了反引号。实际上,在您的情况下,由于没有使用保留字,因此请放弃所有保留字。它们只会增加混乱。 在CSV

  • 问题内容: 我创建了一个数据库和一个表。我还创建了所有需要的字段。我创建了46个字段,其中一个是该行的ID。CSV不包含ID字段,也不包含列的标题。我对所有这些都是陌生的,但一直在努力解决。我不是在这里懒惰地寻求答案,而是在寻找方向。 我试图弄清楚如何导入CSV,但是让它开始从第二个字段开始导入数据,因为我希望auto_increment将填充ID字段,这是我创建的第一个字段。 我没有运气就尝试了

  • 我正在将一个CSV文件中的20000行数据导入Mysql。 CSV中的列与MySQL表中的列的顺序不同。如何自动分配Mysql表列对应的列? 当我执行 此查询将所有数据添加到第一列。 请建议将数据导入Mysql的自动语法。

  • 本文向大家介绍php将csv文件导入到mysql数据库的方法,包括了php将csv文件导入到mysql数据库的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php将csv文件导入到mysql数据库的方法。分享给大家供大家参考。具体分析如下: 本程序实现数据导入原理是先把csv文件上传到服务器,然后再通过php的fopen与fgetcsv文件把数据保存到数组,然后再用while把数据一

  • 问题内容: 将csv文件上传到mysql表的最佳/最快方法是什么?我想将第一行数据用作列名。 发现了这一点: 如何将CSV文件导入MySQL表 但是唯一的答案是使用GUI而不是Shell? 问题答案: 您无需编写脚本即可从CSV文件中提取信息,而是可以直接将MYSQL链接到该文件并使用以下SQL语法上传信息。 要将Excel文件导入MySQL,请先将其导出为CSV文件。从生成的CSV文件中删除CS