繁体   English   中英

使用php从csv文件填充数据库

[英]populating database from csv file using php

如何使用PHP代码从csv文件中的信息填充数据库? 我需要练习使用php进行数据库调用,但此刻,我只能访问的是此csv文件...

设计注意事项:您可能不想使用诸如file_get_contents之类的功能一次将整个文件加载到内存中。 对于大文件,这将耗尽您的所有可用内存并引起问题。 而是像亚当建议的那样做,并且一次阅读一行。

fgetcsv在php手册

//Here's how you would start your database connection
mysql_connect($serverName, $username, $password);
mysql_select_db('yourDBName');

//open the file as read-only
$file = fopen("file.csv", "r");

// lineLength is unlimited when set to 0
// comma delimited
while($data = fgetcsv($file, $lineLength = 0, $delimiter = ",")) {
   //You should sanitize your inputs first, using a function like addslashes
   $success = mysql_query("INSERT INTO fileTable VALUES(".$data[0].",".$data[1].")");
   if(!$success) {
     throw new Exception('failed to insert!');
   }
}

使用内置的PHP函数读取CSV并写入输出文件。 然后,您可以将SQL导入数据库。 这适用于任何类型的数据库。

不要忘记转义您正在使用的任何字符串。 在此示例中,我将sqlite_escape_string()用于此目的。

$fd = fopen("mydata.csv", "r");
$fdout = fopen("importscript.sql","w");

while(!feof($fd))
{
    $line = fgetcsv($fd, 1024); // Read a line of CSV

    fwrite($fdout,'INSERT INTO mytable (id,name)'
                 .'VALUES ('.intval($line[0]).",'".sqlite_escape_string($line[1])."');\r\n";
}

fclose($fdout);
fclose($fd);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM