将csv文件中的值插入MySQL表

时间:2016-02-19 12:55:41

标签: php mysql csv

我正在尝试将从csv文件中提取的值插入到mysql表中。它运行但表没有填充。我已经尝试调试最后的XXXX,但只是看不到我的错误。回显这些值会给我正确的SQL但是当涉及INSERT时 - 没有骰子。

非常感谢你的帮助。

for col in range(GRIDWIDTH):
    for row in range(GRIDHEIGHT):
       houses[col][row].foo() # or houses[(col, row)].foo()

3 个答案:

答案 0 :(得分:1)

将您的查询置于循环中,以便将其与变量$final_line一起使用。

试试这个:

$final_line = explode(",", $file[$line]); 

if ($line!=$lines){ 
   $query = "INSERT INTO ".$table." (email) VALUES ('".$final_line[0]."')";
    mysql_query($query,$db); 
} 

不要使用mysql_*。它已被弃用并从PHP 7中删除。使用mysqli_*PDO

答案 1 :(得分:1)

这似乎是从命令行PHP CLI运行的完美脚本,因此您可以忘记所有刷新复杂性。

如果文件很大,就像您的评论建议的那样,将所有文件加载到内存中也可能会使您遇到PHP内存限制,因此最好一次读取一行而不是整个文件使用{ {1}}用于读取csv文件。

SELECT * FROM contas_emails WHERE CAST(login AS BINARY) RLIKE '[A-Z]';

您现在只需从命令行/终端运行此脚本,如

fgetcsv()

它可以运行几分钟/小时/天,没有任何限制的可能性。

  

我必须提到这一点,否则有人会因为不说它而唠叨我

     

请不要使用<?php $host = 'localhost'; $user = 'fulltime_admin'; $pass = 'secret'; $database = 'fulltime_db'; $db = mysql_connect($host, $user, $pass); mysql_query($database, $db); $filename = "ps4_emails.csv"; $table = ""; $handle = fopen('ps4_emails.csv', 'r'); if ( ! $handle ) { echo 'File does not exists in this location'; exit; } while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $query = "INSERT INTO `ps4_emails` (email) VALUES( '{$data[0]}')"; mysql_query($query,$db); } ?> 数据库扩展,不推荐使用(在PHP7中永远不会使用)   特别是如果您只是学习PHP,请花时间学习>php script.php mysql_数据库扩展,   and here is some help to decide which to use

当您需要上传真实文件时,添加重启机制也是一个好主意,因此您可以从发生问题或有人关闭数据库以备份或其他一些不可预知的打嗝时重新启动该过程

PDO

上面的重启代码没有经过测试,但我过去使用的东西非常成功。所以你必须检查我没有犯过任何愚蠢的错误,但它应该让你知道如何从崩溃前成功更新的最后一行重新启动。

答案 2 :(得分:0)

您可以使用LOAD DATA INFILE从文件中插入。

参考http://dev.mysql.com/doc/refman/5.7/en/load-data.html

insert csv file data into mysql