如何将excel电子表格中的字段自动填充到Web数据库中

时间:2011-11-03 16:30:55

标签: php mysql sql sql-server

我正在尝试找出一种方法来创建一个基于Web的表,其中包含从多个Excel电子表格中获取的合并信息。目前我们在excel中执行Vlookup函数,并将所需的字段与给定的值匹配。例如:

产品ABC需要以下信息:

SKU RSP 成本 已售出数量 数量有限 ..等

这些相应值中的每一个都存储在不同的Excel表中,因此表1将具有产品ABC,SKU和RSP;表2 SKU,COST,QTY SOLD等...所有电子表格之间的共同因素是SKU编号。

基本上我们希望能够将产品ABC与相应的sku,成本等相匹配。

问题是,我该怎么做呢?我理解调用变量的php方面,但我认为我面临的最大挑战是构建数据库(可以是MSSQL或MYSQL)。关于如何设置数据库的任何想法?

更新

感谢您的回复,这些链接非常有用!如何有效地使用主键和外键来确保它的工作原理。如果我有一个名为“合并”的表的最终结果,我怎样才能确保该表拉出正确的行并匹配它们? skus没有任何特定的顺序,所以sql会自动知道哪些与其定义的PK / FK相匹配?

table 1    table2     table 3    consolidated table
SKU        SKU        SKU         SKU  RSP    STATUS
QTY        RSP        COST        QTY  COST
DES       QTY-SOLD    STATUS      DES  QTY SOLD

2 个答案:

答案 0 :(得分:1)

首先,您需要PHP来阅读您的Excel文件。

你可以做两件事:

  1. 将所有Excel文件转换为csv
  2. 使用类似http://code.google.com/p/php-excel-reader/downloads/detail之类的内容? name = php-excel-reader-2.21.zip& can = 2& q =(rar中的例子)
  3. 我建议你制作一个空的数据库表,其中你的产品的所有英特尔都是colums(所以你输入的所有内容),以SKU编号作为索引。

    如果您使用csv,则可以使用:http://www.daniweb.com/web-development/php/threads/119197

    如果您想进行批量上传,我会在扫描服务器上的所需文件夹时使用循环。

    当你导入时,你需要询问mySQL你的产品是否已经存在,如果是这样的话:UPDATE,否则,INSERT IN到你创建的表中:

    if(mysql_num_rows("SELECT SKU FROM yourtable WHERE SKU = $sku") == 1) {
           $result = mysql_query("UPDATE yourtable SET cost = $cost, in_stock = $in_stock WHERE SKU=$sku) OR die(mysql_error());
    } else {
           $result = mysql_query("INSERT INTO yourtable (SKU, cost, in_stock) VALUES ($sku, $cost, $in_stock) OR die(mysql_error());
    }
    

    之后你可以根据需要随意选择,更新,计算......,最好查看更多英特尔参考指南(http://dev.mysql.com)

    更新到已发布的更新

    比较不同的表很容易,但您首先需要了解SQL JOIN概念。你可以在这里查看所有内容:http://mysqljoin.com/

    'JOIN'(可能是INNER JOIN)会比较你想要的键上的表格,并给出这个键的组合结果。之后,您可以在新表中插入所有内容。

答案 1 :(得分:0)

您需要研究数据规范化。这个概念已经存在多年,并且有很好的记录和思考。这是一个介绍:

http://www.agiledata.org/essays/dataNormalization.html