首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将此excel格式导入此数据库格式?

如何将此excel格式导入此数据库格式?
EN

Stack Overflow用户
提问于 2019-02-19 04:23:34
回答 1查看 53关注 0票数 1

我有一个关于将excel单元数据导入sqlserver数据库的问题。但我的excel数据如下所示:

代码语言:javascript
运行
复制
ID|NAME    |DAY1   |DAY2   |DAY3   |DAY4   |  
--+--------+-------+-------+-------+-------+  
1 |John Doe|shift-1|shift-1|shift-1|shift-1|
--------------------------------------------
2 |Alex    |shift-2|shift-2|shift-2|shift-2|
--------------------------------------------
3 |McArthur|shift-3|shift-3|shift-3|shift-3|
--------------------------------------------

我的数据库格式如下所示:

代码语言:javascript
运行
复制
DateTime|ID|NAME    |SCHEDULE|
--------+--+--------+--------+
DAY1    |1 |John Doe|Shift-1 |
------------------------------
DAY1    |2 |Alex    |Shift-2 |
------------------------------
DAY1    |3 |McArthur|Shift-3 |
------------------------------
DAY2    |1 |John Doe|Shift-1 |
------------------------------
DAY2    |2 |Alex    |Shift-2 |
------------------------------
DAY2    |3 |McArthur|Shift-3 |
------------------------------
DAY3    |1 |John Doe|Shift-1 |
------------------------------
DAY3    |2 |Alex    |Shift-2 |
------------------------------
DAY3    |3 |McArthur|Shift-3 |
------------------------------
DAY4    |1 |John Doe|Shift-1 |
------------------------------
DAY4    |2 |Alex    |Shift-2 |
------------------------------
DAY4    |3 |McArthur|Shift-3 |

我试着写了一段代码,当然这不对。

代码语言:javascript
运行
复制
$fp = fopen($_FILES['csv']['tmp_name'],'r') or die("Can't Open");
while($csv_line = fgetcsv($fp,1024))
{
$cnt = count($csv_line);
for($i=1;$i<=$cnt;$i++){
    $data[$i]['ID']   = $csv_line[1];
    $data[$i]['NAME'] = $csv_line[2];
    $data[$i]['DAY1'] = $csv_line[3];
    $data[$i]['DAY2'] = $csv_line[4];
    $data[$i]['DAY3'] = $csv_line[5];
    $data[$i]['DAY4'] = $csv_line[6];
}
    return $data;
}
    fclose($fp) or die("Error");

这是可能的吗?因为我的公司不想改变旧的excel格式,因为它会影响所有的分支机构。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-19 04:39:26

由于您需要按日值对数据进行分组,所以您也需要这样组织您的循环,从文件中读取的每一行每天都创建一个条目。就像这样:

代码语言:javascript
运行
复制
$data = array();
while($csv_line = fgetcsv($fp,1024)) {
    $data[] = array('DATETIME' => 'DAY1', 'ID' => $csv_line[0], 'NAME' => $csv_line[1], 'SCHEDULE' => $csv_line[2]);
    $data[] = array('DATETIME' => 'DAY2', 'ID' => $csv_line[0], 'NAME' => $csv_line[1], 'SCHEDULE' => $csv_line[3]);
    $data[] = array('DATETIME' => 'DAY3', 'ID' => $csv_line[0], 'NAME' => $csv_line[1], 'SCHEDULE' => $csv_line[4]);
    $data[] = array('DATETIME' => 'DAY4', 'ID' => $csv_line[0], 'NAME' => $csv_line[1], 'SCHEDULE' => $csv_line[5]);
}

然后,您应该能够将$data数组的每一行插入到数据库中。

代码语言:javascript
运行
复制
foreach ($data as $d) {
    // insert $d into database
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54758828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档