利用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 '
';
- 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 中打开该文件。