程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MYSQL入門知識 >> 從mysql備份中提取單張表數據的代碼

從mysql備份中提取單張表數據的代碼

編輯:MYSQL入門知識



1、先提取備份數據中的前50行出來,查看一下備份數據格式
    head -50 bakdb.sql > head50.txt
    
    類似下面的數據是我們所需要提取的:
    
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
    /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
    /*!40103 SET TIME_ZONE='+00:00' */;
    /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

    -- Table structure for table `TABLE_1`
    
    說明:1、前半部分是設定數據的格式,可防止所導入的數據出現亂碼
          2、下半部分表面了一個表數據的開始,只要我們能把指定表的開始到下一個表的開始中間部分內容提取出來,我們的目的就達成了
          
          
2、確認指定表的下一個表的開始,按理說,表名順序都是按字母排序的,我們可以用 SQLyog 查看得到,但為了以防萬一,我們有必要確認一下
    grep "Table structure for table" bakdb.sql > tables.txt
    
    
3、確認表名後,開始提取指定表數據
    awk '/-- Table structure for table `TABLE_1`/,/-- Table structure for table `TABLE_2`/{print}' bakdb.sql >> head50.txt
    
    說明:提取出來的數據是不指定庫名的,我們有必要在語句開始前指定庫名,避免導入數據時導錯地方
          在“-- Table structure for table `TABLE_1`”下一行加多“use `DATABASE_NAME`;”

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved