本文目录一览:
如何用php导出导入大数据库
在使用PhpMyAdmin的时候经常用到数据的导入和导出(Export/Import),但是在导入大数据的时候由于php上传文件的限制和脚本响应时间的限制,导致phpMyAdmin无法导入大数据。很多时候都是由于文件过大,从本地浏览上传导入,容易中断失败,有没有更好的方法呢?
方法:
在phpMyAdmin的目录下,找到根目录的config.inc.php文件,
打开config.inc.php文件,查找$cfg['UploadDir'],这个参数就是设定导入文件存放的目录,这里把值设定为:ImportSQLFile。
在phpMyAdmin目录下,建立以ImportSQLFile命名的文件夹,
把我们需要导入的数据文件,放到ImportSQLFile文件夹下面,非常简单,
登入phpMyAdmin,选择需要导入的数据,点击导航条上面的“导入”按钮,
选中“从网站服务器上传文件夹ImportSQLFile/中选择:”选项,并需要导入的数据文件,
最后点击“执行”,即可导入成功。
注意事项
如果在config.inc.php文件,没有找到$cfg['UploadDir'],可以自己在文件中添加上去即可。
怎样用PHP实现文件上传
创建一个文件上传表单
允许用户从表单上传文件是非常有用的。
请看下面这个供上传文件的 HTML 表单:
html
body
form action="upload_file.php" method="post"
enctype="multipart/form-data"
label for="file"Filename:/label
input type="file" name="file" id="file" /
br /
input type="submit" name="submit" value="Submit" /
/form
/body
/html
请留意如下有关此表单的信息:
form 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。
input 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。
注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。
创建上传脚本
"upload_file.php" 文件含有供上传文件的代码:
?php
if ($_FILES["file"]["error"] 0)
{
echo "Error: " . $_FILES["file"]["error"] . "br /";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "br /";
echo "Type: " . $_FILES["file"]["type"] . "br /";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kbbr /";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
?
通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。
第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:
$_FILES["file"]["name"] - 被上传文件的名称
$_FILES["file"]["type"] - 被上传文件的类型
$_FILES["file"]["size"] - 被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] - 由文件上传导致的错误代码
这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。
上传限制
在这个脚本中,我们增加了对文件上传的限制。用户只能上传 .gif 或 .jpeg 文件,文件大小必须小于 20 kb:
?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
($_FILES["file"]["size"] 20000))
{
if ($_FILES["file"]["error"] 0)
{
echo "Error: " . $_FILES["file"]["error"] . "br /";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "br /";
echo "Type: " . $_FILES["file"]["type"] . "br /";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kbbr /";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
}
else
{
echo "Invalid file";
}
?
注释:对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。
保存被上传的文件
上面的例子在服务器的 PHP 临时文件夹创建了一个被上传文件的临时副本。
这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:
?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
($_FILES["file"]["size"] 20000))
{
if ($_FILES["file"]["error"] 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "br /";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "br /";
echo "Type: " . $_FILES["file"]["type"] . "br /";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kbbr /";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "br /";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?
上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。
注释:这个例子把文件保存到了名为 "upload" 的新文件夹。
利用php导入excel文件
【步骤1】在前台html页面进行上传文件
form method="post" action="php文件" enctype="multipart/form-data"
h3导入Excel表:/h3input type="file" name="file_stu" /
input type="submit" value="导入" /
/form
【步骤2】在对应的php文件进行文件的处理
if (! empty ( $_FILES ['file_stu'] ['name'] ))
{ $tmp_file = $_FILES ['file_stu'] ['tmp_name']; $file_types = explode ( ".", $_FILES ['file_stu'] ['name'] ); $file_type = $file_types [count ( $file_types ) - 1];
/*判别是不是.xls文件,判别是不是excel文件*/ if (strtolower ( $file_type ) != "xls") { $this-error ( '不是Excel文件,重新上传' ); }
/*设置上传路径*/ $savePath = SITE_PATH . '/public/upfile/Excel/';
/*以时间来命名上传的文件*/ $str = date ( 'Ymdhis' ); $file_name = $str . "." . $file_type;
/*是否上传成功*/ if (! copy ( $tmp_file, $savePath . $file_name )) { $this-error ( '上传失败' ); }
/*
*对上传的Excel数据进行处理生成编程数据,这个函数会在下面第三步的ExcelToArray类中
注意:这里调用执行了第三步类里面的read函数,把Excel转化为数组并返回给$res,再进行数据库写入
*/ $res = Service ( 'ExcelToArray' )-read ( $savePath . $file_name );
/*
重要代码 解决Thinkphp M、D方法不能调用的问题
如果在thinkphp中遇到M 、D方法失效时就加入下面一句代码
*/
//spl_autoload_register ( array ('Think', 'autoload' ) );
/*对生成的数组进行数据库的写入*/
foreach ( $res as $k = $v ) { if ($k != 0) { $data ['uid'] = $v [0]; $data ['password'] = sha1 ( '111111' ); $data ['email'] = $v [1];
$data ['uname'] = $v [3];
$data ['institute'] = $v [4]; $result = M ( 'user' )-add ( $data ); if (! $result) { $this-error ( '导入数据库失败' ); } } }
}
【步骤3】ExcelToArrary类,用来引用phpExcel并处理Excel数据的
class ExcelToArrary extends Service{
public function __construct() {
/*导入phpExcel核心类 注意 :你的路径跟我不一样就不能直接复制*/ include_once('./Excel/PHPExcel.php'); }
/**
* 读取excel $filename 路径文件名 $encode 返回数据的编码 默认为utf8
*以下基本都不要修改
*/
public function read($filename,$encode='utf-8'){
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$objReader-setReadDataOnly(true);
$objPHPExcel = $objReader-load($filename);
$objWorksheet = $objPHPExcel-getActiveSheet();
$highestRow = $objWorksheet-getHighestRow(); $highestColumn = $objWorksheet-getHighestColumn(); $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); $excelData = array(); for ($row = 1; $row = $highestRow; $row++) { for ($col = 0; $col $highestColumnIndex; $col++) { $excelData[$row][] =(string)$objWorksheet-getCellByColumnAndRow($col, $row)-getValue(); } } return $excelData;
}
}
php上传文件到文件夹
//这是给文件重命名
$one = explode(".",$_FILES["file"]["name"]);
$file_name = $_FILES["file"]["name"] = time().".".$one[1];
//这是上传,用到move_uploaded_file,移动到:./assets/up/这个文件夹
move_uploaded_file($_FILES["file"]["tmp_name"], "./assets/up/" . $file_name);
//这是往数据库存放的 文件名称
$information_img = "./assets/up/" . $file_name;