我想让用户从一个.csv文件(从各种联系人管理程序导出)将他们的联系人上传到服务器,然后将它保存在mysql中。从我在SO和其他地方阅读的内容中,MYSQL可以使用LOAD DATA INFILE导入数据。它似乎也有一个本地选项来从客户端获得它。我的三部分问题是:我是否需要使用文件上传将文件传输到服务器,或者我可以通过LOAD DATA INFILE的LOCAL选项直接访问它?由于应用程序将为他们的联系人服务多个用户,我应该将所有联系人放在一个表中吗?由于不同的用户在.csv文件中会有不同的结构,处理不同.csv文件中字段名/模式差异的最佳方法是什么?PHP/MYSQL上传,将.csv文件导入到mysql-process-table设计
暂定代码:
<html>
<body>
<form action="getcsvile.php" method="post"
enctype="multipart/form-data">
<input type="file" size=12 name="file" id="file" /><input type="submit" name="submit" value="Upload CSV File" /></form>
<body>
</html>
<?php
$userid = $_SESSION['userid'];
//error checking to make sure .csv file and other requirements met...then
//get extension, set to $ext
$target = "csvfiles/".$userid.".".$ext;
move_uploaded_file($_FILES["file"]["tmp_name"],$target);
//NEED TO PARSE DATA USING fgetcsv or something to examine, clean up csv data?
$sql = "LOAD DATA LOCAL INFILE '$target' INTO TABLE contacts FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES";// IS LOCAL right?
MySQL_query($sql);
$sql2 = "UPDATE contacts SET userid = '$userid';
MySQL_query($sql2);
echo "success;
这个问题似乎是一个正确的方法呢?如何容纳来自不同用户的不同csv文件有多难?
非常感谢。
什么是语法来映射csv文件中的列到表?我想我可以阅读所有的列头,并使用开关,以便首先将姓名,名字等映射到第一位,然后将zip,zipcode等全部映射到zip。 – user1260310