2010-11-01 72 views
0

好了,所以我有一个数据库表叫请求这种结构使用PHP到MySQL和更新以及

mysql> desc requests; 
+------------+--------------+------+-----+---------+----------------+ 
| Field  | Type   | Null | Key | Default | Extra   | 
+------------+--------------+------+-----+---------+----------------+ 
| id   | int(11)  | NO | PRI | NULL | auto_increment | 
| artist  | varchar(255) | YES |  | NULL |    | 
| song  | varchar(255) | YES |  | NULL |    | 
| showdate | date   | YES |  | NULL |    | 
| amount  | float  | YES |  | NULL |    | 
+------------+--------------+------+-----+---------+----------------+ 

这里上传CSV是一些示例数据

+----+-----------+-------------------------+------------+--------+ 
| id | artist | song     | showdate | amount | 
+----+-----------+-------------------------+------------+--------+ 
| 6 | Metallica | Hello Cruel World  | 2010-09-15 | 10.00 | 
| 7 | someone | Some some    | 2010-09-18 | 15.00 | 
| 8 | another | Some other song   | 2010-11-10 | 45.09 | 
+----+-----------+-------------------------+------------+--------+ 

我需要一种方法来能够为用户提供上传具有相同结构的csv的方式,并根据csv中的内容更新或插入。我在网上发现了很多脚本,但大多数都有一个硬编码的csv,这不是我所需要的。我需要的用户能够上传CSV ......很容易与PHP是....

下面是一个例子CSV

id artist   song   showdate amount 
11 NewBee   great stuff 2010-09-15 12.99 
10 anotherNewbee even better 2010-09-16 34.00 
6 NewArtist  New song  2010-09-25 78.99 

正如你可以看到我有ID 6这已经是在数据库中,需要更新..其他两个将被插入

我不是要求某人编写整个脚本,但如果我可以得到一些方向的上传,然后从那里去.. ..感谢

回答

2

创建存储过程如下,并进行测试。它的工作原理

CREATE proc csv 

(
@id int, 
@artist varchar(50), 
@songs varchar(100), 
@showdate datetime, 
@amount float 
) 
as 
set nocount on 

if exists (select id from dummy1 where [email protected]) -- Note that dummy1 as my table. 

begin 
update dummy1 set artist= @artist where [email protected] 
update dummy1 set [email protected] where [email protected] 
update dummy1 set [email protected] where [email protected] 
update dummy1 set [email protected] where [email protected] 
end 
else 
insert into dummy1 (artist,songs,showdate,amount)values(@artist,@songs,@showdate,@amount) 
Go