【问题标题】:How can an uploaded Excel file update an Oracle database? [duplicate]上传的 Excel 文件如何更新 Oracle 数据库? [复制]
【发布时间】:2014-08-21 02:26:40
【问题描述】:

我有一个 Oracle 11g 数据库,正在与 PHP 文件进行通信。我希望我网站上的用户能够上传 .xls 文档,其单元格值将传递给数据库中的变量。

我想我会让用户通过基本的 html 表单上传 .xls,这似乎是最简单的。如何从上传的 .xls 文件中获取数据来更新数据库?

注意:可能必须忽略前几行,因为它们将是标题/标题。我怎样才能让程序忽略这些?

示例表:

TITLES AND OTHER HEADERS - Probably 2-3 rows of cells
Header1 | Header2 | Header3 | Header4 | Header5 | Header6 | Header7 | Header8 
value1  | value2  | value3  | value4  |  value5 | value6  | calue7  | value8
...
valueN  | valueN  | valueN  | valueN  |  valueN |  valueN | valueN  | valueN 

我当前的代码:

表格:

   <?php require "reader.php";
 ?>


<form name="SLCCA" action="update_handler2.php" method="post">


   <u>GF:</u> <input type="file" name="xls_doc"><br>


   <input type="submit" value="Submit">

表单处理程序:

   <?php

    $xls_doc=$_POST["xls_doc"];

    $objConnect = oci_connect("user", "pass", "(description=(address=(protocol=tcp)(host=hostaddress.com)(port=1533))(connect_data=(service_name=sid)))");

require_once('reader.php');
?>

<?php

    $reader=new Spreadsheet_Excel_Reader();
    $reader->setUTFEncoder('iconv');
    $reader->setOutputEncoding('UTF-8');
    $reader->read($xls_doc);

    $strSQL = "LOAD DATA
    INFILE 'xls_doc.dat'
    BADFILE 'xls_doc.bad'
    DISCARDFILE 'xls_doc.dsc'
    APPEND
    INTO TABLE INTOXDM.LCCR";

    $objParse = oci_parse($objConnect, $strSQL);
    $objExecute = oci_execute($objParse);

?>

【问题讨论】:

  • Err...mysql 不是 Oracle 11g。
  • 这是一个 Oracle 问题,而不是 MySQL 问题!人们要么没有仔细阅读,要么参与了他们不理解的标签。
  • @mrjoltcola 你是说我做错了什么吗?我很困惑哈哈
  • @Ryan4588 - 不,不是你;编辑并关闭您的问题并将其链接到 MySQL 问题的人做错了。
  • @JasonMArcher - 当然它是 MySQL 独有的。 3 个答案中有 2 个是特定于 MySQL 的,除非您可以向我们展示如何使用 PHPMyAdmin 或“load data local infile ...”语法将数据导入 Oracle

标签: php excel oracle


【解决方案1】:

首先,convert the XLS to csv

$reader=new Spreadsheet_Excel_Reader();
$reader->setUTFEncoder('iconv');
$reader->setOutputEncoding('UTF-8');
$reader->read($filename);

现在使用SQL*Loader 读入:

LOAD DATA
INFILE 'my_file.dat'
BADFILE 'my_file.bad'
DISCARDFILE 'my_file.dsc'
APPEND
INTO TABLE my_table

如果您还有其他问题,请发表评论。

【讨论】:

  • 在将其转换为 .csv 后,我怎样才能删除(或忽略)一些顶部部分,这样标题/标题就不会添加到数据库中。如果由我决定,我只会有一个没有标题的通用表格,但事实并非如此。感谢您的快速回复!
  • 如果您使用的是 Unix,sed -i -e "2d" $CSV_FILE 将为您处理此问题。如果您使用的是 Windows,cygwin 包括 sed。
  • 非常感谢@hd1!我会看看你说的,很有帮助。
  • 我收到错误:“致命错误:在第 12 行未找到类 'Spreadsheet_Excel_Reader'
  • 我很笨,需要上课。忽略最后一条评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-30
  • 1970-01-01
  • 2013-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多