利用fputcsv导出数据备份数据
今天,分享一个利用fputcsv导出数据备份数据的方法,我也时看到些零零散散的代码,想着拼起来,所以我只提供些思路,以及简单的代码,至于怎么组合能够让它更强大,尽情去探索吧
讲之前先上一段获取数据库里面的所有表以及表对应的字段的代码。
获取数据库所有表和字段
- $i = 0;
- $tables = $db->getAllTables();
- foreach ($tables as $key => $value) {
- $rooters[$i]['tab'] = $value;
- $fields = $db->getAllFields("$value");
- foreach ($fields as $k => $v) {
- $rooters[$i]['colus'] .= $v['name'].'('.$v['con'].'),';
- }
- $i++;
- }
- echo '<pre>';
- print_r($rooters);
- /*
- * 获取数据库所有的表名
- */
- static function getAllTables() {
- $result = self::query("SHOW TABLES");//执行查询语句
- $tables=array();
- while($row = mysql_fetch_array($result))
- {
- $tables[] =$row[0];
- }
- return $tables;
- }
- /*
- *获取表里对应的字段
- */
- static function getAllFields($tableName) {
- $dbName = self::$dbName;
- $result = self::query("select COLUMN_NAME,column_comment from INFORMATION_SCHEMA.Columns where table_name='$tableName' and table_schema='$dbName'");//table_name 换成你对应的表名
- $tables=array();
- $i = 0;
- while($row = mysql_fetch_array($result))
- {
- $tables[$i]['name'] =$row['COLUMN_NAME'];
- $tables[$i]['con'] =$row['column_comment'];
- $i++;
- }
- return $tables;
- }
- $tableName = isset($_GET['tablename'])&&($_GET['tablename']!=='')?$_GET['tablename']:'xxxx';
- $rooters = array();
- $fields = $db->getAllFields($tableName);
- foreach ($fields as $k => $v) {
- $rooters[$k] = $v['name'];
- }
- $sql = "select * from {$tableName}";
- $data = $db->read($sql);
- $con = array();
- $head = $rooters;
- foreach ($head as $i => $v2) {
- $con[0] .= ivutf8($v2).',';
- }
- $con[0] = trim($con[0],' , ');
- $str = '';
- foreach ($data as $k => $v) {
- foreach ($head as $key => $value) {
- $str .= ivutf8($v[$value]).",";
- }
- $con[$k+1] = trim($str,' , ');
- $str = '';
- }
- $file = fopen("{$tableName}.csv","w");
- foreach ($con as $line){
- fputcsv($file,split(',',$line));
- }
- fclose($file);
- echo '---------------------------SUCCESS---------------------------';
这是因为SYLK 文件是一个文本文件,开头的"ID"或"ID_xxxx",其中 xxxx 是文本字符串。 SYLK 文件的第一个的记录是在 ID_Number 记录。 Excel 将识别该文本在文本文件开头时, 它会将该文件解释为 SYLK 文件。 Excel 将尝试从该 SYLK 格式转换该文件,但不能这样做,因为"ID"字符后不有任何有效的 SYLK 代码。 因为 Excel 不能转换该文件,您收到错误消息。
当您打开一个文本文件、 CSV 文件和文件的前两个字符是将大写字母"I","D"时,会发生此问题。
例如文本文件可能包含以下文本:ID, STATUS 123, open 456, closed
如果前两个字母小写"i"和"d"不会发生此问题的 。
解决方案:
若想在 Excel 中打开您的文件,可以在一个文本编辑器中打开该文件,然后插入第一行开头处加一个撇号。
1.在文本编辑器 (如记事本) 中打开文本文件。 单击第一行文字在第一个字符之前。 按撇号键键盘 (') 上。
2.在 文件 菜单中上, 单击 保存 。 退出文本编辑器。 现在可以在 Excel 中打开该文件。
利用fputcsv导出数据备份数据的更多相关文章
- mysql数据安全之利用二进制日志mysqlbinlog备份数据
mysql数据安全之利用二进制日志mysqlbinlog备份数据 简介:如何利用二进制日志来备份数据 什么是二进制日志: 二进制日志就是记录着mysql数据库中的一些写入性操作,比如一些增删改,但是, ...
- 利用osmosis导出osm城市数据
转载(未测试) 方法核心就是利用osmosis的导出指定功能,即是从大范围导出小范围的基本用例. 我们只需要知道我们所需要提取的城市的经纬度范围, 例如广州市的经纬度范围是北纬22.26~23.56度 ...
- MySQL(十四)之数据备份与还原
前言 上一篇分享了关于MySQL事务的知识,在我们数据库中最重要的就是数据了,所以数据的备份就显的特别的重要! 为什么要备份数据? 在生产环境中我们数据库可能会遭遇各种各样的不测从而导致数据丢失, 大 ...
- Postgresql 数据库,如何进行数据备份以及导入到另外的数据库
方法其实有很多种,这里用的方法比较稳妥.之后有时间会补充别的方法. 该方法分为三步:备份数据,新建表结构,导入数据 备份数据:>>\copy table_name to '/home/ba ...
- HBase数据备份及恢复(导入导出)的常用方法
一.说明 随着HBase在重要的商业系统中应用的大量增加,许多企业需要通过对它们的HBase集群建立健壮的备份和故障恢复机制来保证它们的企业(数据)资产.备份Hbase时的难点是其待备份的数据集可能非 ...
- mongodb数据导入导出以及备份恢复
昨日在公司收到游戏方发来一个1G多的数据文件,要求导入联运账号中.细细一看,纳尼!文件竟然是BSON格式. 哇塞,这不是去年给大家分享的NoSql中的MongoDB的备份文件吗? 于是搭好环境 1.启 ...
- MongoDB学习(三)数据导入导出及备份恢复
这几天想着公司要用MongoDB,自然就要用到数据导入导出,就自己学习了一下. 在Mongo学习(二)中就讲到了在bin目录下有一些工具,本篇就是使用这些工具进行数据的导入导出及备份恢复. 注意:以下 ...
- oracle中导入导出数据备份数据库
原文:oracle中导入导出数据备份数据库 数据库所在位置 将数据导出到的文件名 用户名 备份数据库 :exp c ...
- MySQL数据库的数据备份和恢复(导入和导出)命令操作语法【转】
不管是Oracle数据库还是SQL Server数据库,每个数据库都有自己的一套数据备份和恢复的方法,MySQL数据库也不例外.MySQL数据库备份和恢复用到了两个命令,分别是“mysqldump”和 ...
随机推荐
- (数字IC)低功耗设计入门(一)
低功耗设计这个专题整理了好久,有一个月了,有图有证据: 然而最近一直有些烦心事.郁闷事,拖延了一下,虽然现在还是有点烦,但是还是先发表了吧.下面我们就来聊聊低功耗设计吧,由于文章比较长,因此我就不一次 ...
- 开涛spring3(1) - Spring概述
1.1.1 Spring是什么 Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发.应用程序是由 ...
- 利用EF ORM Mysql实体运行程序出错解决方案
程序环境:VS2013 + mysql (server 5.7 + connector net 6.9.9 + for visual studio 1.2.6) + entity framework ...
- Lua学习(5)——迭代器与泛型for
1. 迭代器 2. 泛型for语义 所谓迭代器就是一种可以遍历一种集合中所有元素的机制.在lua中,迭代器通常表示为函数,每调用依次函数就返回集合中的下一个元素.泛型for 内部保存了迭代器函数 实际 ...
- 地理位置 API
js获取地理位置的接口navigator.geolocation geolocation对象有三个方法 1.getCurrentPosition 2.watchPosition 3.clearWatc ...
- Spring读取xml配置文件的原理与实现
本篇博文的目录: 一:前言 二:spring的配置文件 三:依赖的第三方库.使用技术.代码布局 四:Document实现 五:获取Element的实现 六:解析Element元素 七:Bean创造器 ...
- MYSQL和JAVA(课堂笔记)
MYSQL 数据库管理工具 JAVA 编程语言 数据库驱动(JAVA和MYSQL对接方式) 到官网上下载驱动 加载驱动 import java.sql.Connection;import java. ...
- 关于 vue-cli v2.8.2
我在撰写<Vue2实践揭秘>时采用的 vue-cli 版本是 v2.5.1,由于实体书的出版周期比电子书的要长,所以到全书出版vue-cli已经更新到 v2.8.2 了,我在书中曾经对 v ...
- OSS web直传 ajax方式 上传图片、文件
部分js代码 send_request = function(){//这是从后台获取认证策略等信息. var htmlobj=$.ajax({url:root+"/service/polic ...
- Dojo初探之5:dojo的request(请求)操作、请求过程事件绑定和隐藏数据data()操作(基于dojo1.11.2版本)
前言: 上一章详细阐述了dojo的事件绑定操作,本章将讲解dojo的请求操作 注:dojo的请求操作与js和jquery完全不同! 1.dojo的请求 dojo通过request.get()/.put ...