【问题标题】:What's the tidiest way to get hierarchy from csv to a database?从 csv 到数据库的层次结构最简洁的方法是什么?
【发布时间】:2012-10-30 09:13:37
【问题描述】:

在一个网络应用程序中,我的用户上传了一个 csv 文件,我需要在进入数据库的过程中对其进行检查。部分信息形成了一个简单的分层数据集,因此我想确保行是唯一的。以下是我的想法,举个例子。

CSV 包括这些行...

field5      field6      field7
fred        bert        apple
fred        bert        apple
fred        george
fred        george      pear
will        tom         orange
will        tom         plum

我打算将它们吸收到这样的 PHP 数组中。

$unique_fields = array();
while( $row = fgetcsv($handle) ){
    if( $row[5] ){
        if( !array_key_exists( $row[5] , $unique_fields ) ){
            $unique_fields[ $row[5] ] = array();
        }
        if( $row[6] ){
            if( !array_key_exists( $row[6] , $unique_fields[ $row[5] ] )){
                $unique_fields[ $row[5] ][ $row[6] ] = array();
            }

            if( $row[7] ){
                if( !array_key_exists( $row[7], $unique_fields[ $row[5] ][ $row[6] ]  )){
                    $unique_fields[ $row[5] ][ $row[6] ][ $row[7] ] = array();
                }
            }
        }
    }
}

如果这是一个好主意(我愿意接受建议)- 之后最好的方法是什么?我想将数组传输到我的数据库中,使其看起来像上面的 csv 示例,但没有重复。

【问题讨论】:

  • 这个问题是如何涉及层次结构的?您只需要对行进行重复数据删除吗?
  • @Skrol29 - 重点是简化 csv 的层次结构。 csv 可能有 10,000 行,但相关列中的层次结构可能仅包含(例如)10-12 个唯一项。这些将进入与其余 csv 数据不同的表中。

标签: php mysql csv hierarchical-data


【解决方案1】:

好的,没有人想尝试它,所以我坚持了下来,这就是我想出的。如果有人有更好的解决方案,我会看这个页面。感谢观看。

if( count($unique_fields) ){
    foreach( $unique_fields as $k1=>$v1 ){
        if( is_array($v1) ){
            foreach( $v1 as $k2=>$v2 ){
                if( is_array($v2) ){
                    foreach( $v2 as $k3=>$v3 ){
                        //insert $k1, $k2, $k3
                    }
                }else{
                    //insert $k1, $k2
                }
            }
        }else{
            //insert $k1 on its own
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2019-10-09
    • 2016-04-23
    • 1970-01-01
    相关资源
    最近更新 更多