我在try 从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>

这基本上是我在多次try 各种方法后发现的一个例子的改编.

我的CSV有两列数据,第一列是文本,第二列是整数 数据库中的表也有两列,第一列称为"Text",第二列称为"Number"

所以我的问题是:

  1. 上传的文本在每个字段都显示为0,我不知道为什么
  2. 我不断地读到数据以""结尾,如果发生这种情况,我将如何对其进行排序?
  3. 对于标题等,我如何忽略CSV的前X行?
  4. 在整个过程中是否更改了数据格式,或者是否已准备好在图形中使用它?例如,一旦将小数放入数据库,小数会保留小数吗?

我想这涵盖了一切,提前感谢您的帮助!

编辑:

刚刚测试了10000条上传记录,发现错误:

"致命错误:超过最大执行时间30秒"

有什么 idea 吗?

推荐答案

前几天我回答了一个几乎相同的问题:Save CSV files into mysql database

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解析要快much多倍.

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

希望有帮助

Database相关问答推荐

将数据拆分为月份(以Postgres为单位

SearchView 在 Android Studio 中显示 Data.entity.Cantact.@85c7ce6

MongoDB和Redis有什么区别?

MongoDB是面向对象的吗?

基于邮政编码的纬度和经度

如何在运行时备份嵌入式 H2 数据库引擎?

如何将 MySQL Workbench 连接到 Amazon RDS?

NoSql DB 和 OO Db 有什么区别?

数据库设计:喜欢表?

无法在 MYSQL 5.5 w/MYSQL Workbench 中更改模式名称

为什么数据库索引使用平衡树,而不是哈希表?

应用程序服务器 JDBC 资源的 DataSource 或 ConnectionPoolDataSource

不可重复读与脏读的区别

在 SQL Server 2005 中将数据库从一个驱动器移动到另一个驱动器的正确方法是什么?

从 Java 创建 MySQL 数据库

Slick 3.0 在数据库驱动程序级别是reactive/asynchronous的吗?对于哪些数据库?

dbvisualizer:在 Select 查询中设置最大行数

mysql 无法从存储引擎读取自增值

如何使用 django 判断 postgresql 数据库中是否存在某些内容?

传递依赖有什么问题?