中文字幕无码日韩视频无码三区

數據導出、導入的方法和裝置的制作方法

文檔序號:6332692閱讀(du):207來源:國知局
專利名稱:數據導出、導入的方法和裝置的制作方法
技術領域
本發明涉及通信技術領域,尤其是涉及數據導出、導入的方法和裝置。
背景技術
目前在業務產品中,數據庫的應用非常普遍,應用過程中經常需要對數據庫的數 據進行導入/導出操作,以便對數據庫中的數據進行分析,或使數據庫進行故障復現,以便 對數據庫的故障進行分析等。現有技術中為了保證業務系統的穩定性與安全性,一般需要 將數據存儲在其他獨立的數據庫中進行分析處理。由于存儲數據的獨立數據庫與對應的操 作系統環境不一定與現網環境一樣,因此從現網導出的數據不一定能使用相關數據庫的還 原工具進行還原,需要通過通用數據格式和工具進行數據導入和數據導出操作。例如使用通用的文本格式的數據文件進行數據導入和數據導出操作,但是不同的 數據庫之間,使用的數據導入和數據導出命令完全不同,同時執行導入和導出命令的參數 用法也完全不同。現有的專利文獻包括專利申請號為CN200580051820. 2的中國專利申請“數據結 構的移植和轉換”和專利號為CN200710115097. 0的中國專利“一種異構環境中復制數據庫
數據的方法”。其中,專利申請號為CN200580051820. 2的中國專利申請存在以下不足該專利僅 說明了一種對源系統和目標系統之間的數據結構進行轉換的方法,沒有涉及到數據庫間數 據的轉移,以及相關處理。專利號為CN200710115097. 0的中國專利存在以下不足一、該專利必須基于對數 據庫本身的日志進行分析的基礎上,生成相關的結構化查詢語言(SQL)語句來實現數據的 轉移。同時如果數據庫日志不全或存在大量的歸檔日志需要進行分析,則需要較長的分析 時間。

發明內容
本發明的主要目的在于提供一種數據導出的方法和裝置、數據導入的方法和裝 置,實現不同類型的數據庫間數據轉移。本發明提出一種數據導出的方法,其包括步驟選擇預先設置的腳本文件;判斷腳本文件是否正確和腳本文件中指定的數據表是否存在;當腳本文件正確,且指定的數據表存在,提取腳本文件中指定的數據表相關信 息;根據指定的數據表相關信息從源數據庫中所述指定的數據表導出數據,并將導出 的數據和所述指定的數據表相關信息部分或全部寫入數據文件中。優選地,所述判斷腳本文件是否正確和腳本文件中指定的數據表是否存在之后還 包括
當腳本文件錯誤和/或腳本文件中指定的數據表不存在時,記錄數據導出失敗日志。優選地,所述指定的數據表相關信息包括指定的數據表對應的源數據庫類型信 息、指定的數據表結構信息和指定的數據表索引信息。本發明另提出一種數據導出的裝置,其包括導出選擇模塊,用于選擇預設設置的腳本文件;導出判斷模塊,用于判斷腳本文件是否正確和腳本文件中指定的數據表是否存 在;導出獲取模塊,用于當腳本文件正確,且指定的數據表存在,提取腳本文件中指定 的數據表相關信息;導出數據模塊,用于根據指定的數據表相關信息從源數據庫中所述指定的數據表 導出數據,并將導出的數據和所述指定的數據表相關信息部分或全部寫入數據文件中。優選地,所述的數據導出的裝置還包括導出記錄模塊,用于當腳本文件錯誤和/或腳本文件中指定的數據表不存在時, 記錄數據導出失敗日志。優選地,所述指定的數據表相關信息包括指定的數據表對應的源數據庫類型信 息、指定的數據表結構信息和指定的數據表索引信息。本發明另提出一種數據導入的方法,其包括步驟選擇待導入的數據文件;判斷待導入的數據文件對應的源數據庫類型與目標數據庫類型是否一致;當不一致時,將所述數據文件中的數據表相關信息轉換為符合目標數據庫類型的 數據表相關信息;將轉換后的數據表相關信息對應的數據導入目標數據庫。優選地,所述將轉換后的數據表相關信息對應的數據導入目標數據庫具體包括判斷目標數據庫中是否存在與所述數據表相關信息對應的數據表;若是,將轉換后的數據表相關信息對應的數據導入目標數據庫中對應的數據表 內;若否,調用目標數據庫中相關接口創建與數據表相關信息對應的數據表,并將轉 換后的數據表相關信息對應的數據導入所述創建的數據表內。優選地,所述判斷待導入的數據文件對應的源數據庫類型與目標數據庫類型是否 一致之后還包括若是,判斷目標數據庫中是否存在與所述數據表相關信息對應的數據表;若是,將所述數據文件中的數據導入目標數據庫中對應的數據表內;若否,調用目標數據庫中相關接口創建與所述數據表相關信息對應的數據表,并 將所述數據文件中的數據導入所述創建的數據表內。本發明另提出一種數據導入的裝置,其包括導入選擇模塊,用于選擇待導入的數據文件;導入判斷模塊,用于判斷待導入的數據文件對應的源數據庫類型與目標數據庫類
型是否一致;
導入轉換模塊,用于當待導入的數據文件對應的源數據庫類型與目標數據庫類型 不一致時,將所述數據文件中的數據表相關信息轉換為符合目標數據庫類型的數據表相關 fn息;導入數據模塊,用于將轉換后的數據表相關信息對應的數據導入目標數據庫。優選地,所述導入數據模塊包括判斷單元,用于判斷目標數據庫中是否存在與所述數據表相關信息對應的數據 表;導入單元,用于當目標數據庫中存在與所述數據表相關信息對應的數據表時,將 轉換后的數據表相關信息對應的數據導入目標數據庫中對應的數據表內;調用單元,用于當目標數據庫中不存在與所述數據表相關信息對應的數據表時, 調用目標數據庫中相關接口創建與數據表相關信息對應的數據表,并通過導入單元將轉換 后的數據表相關信息對應的數據導入所述創建的數據表內。優選地,所述導入單元,還用于當目標數據庫中存在與所述數據表相關信息對應 的數據表時,將所述數據文件中的數據導入目標數據庫對應的數據表內;所述調用模塊,還用于當目標數據庫中不存在與所述數據表相關信息對應的數據 表時,調用目標數據庫中相關接口創建與所述數據表相關信息對應的數據表,并通過導入 單元將所述數據文件中的數據導入所述創建的數據表內。由上可知,本發明提供的數據導出、導入的方法和裝置,可實現不同類型的數據庫 間數據轉移,數據轉移速度快、應用范圍廣、靈活性好。


圖1是本發明的數據導出的方法一實施例的流程圖;圖2是本發明的數據導出的裝置一實施例的結構示意圖;圖3是本發明的數據導出的裝置另一實施例的結構示意圖;圖4是本發明的數據導入的方法一實施例的流程圖;圖5是本發明的將轉換后的數據表相關信息對應的數據導入目標數據庫的具體 流程圖;圖6是本發明的數據導入的裝置一實施例的結構示意圖;圖7是本發明的導入數據模塊的具體結構示意圖。本發明目的的實現、功能特點及優點將結合實施例,參照附圖做進一步說明。
具體實施例方式應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。參見圖1,提出本發明的數據導出的方法一實施例,其包括步驟步驟S101、選擇預先設置的腳本文件;步驟S102、判斷腳本文件是否正確和腳本文件中指定的數據表是否存在;步驟S103、當腳本文件正確,且指定的數據表存在,提取腳本文件中指定的數據表 相關信息;步驟S104、根據指定的數據表相關信息從源數據庫中所述指定的數據表導出數據,并將導出的數據和所述指定的數據表相關信息部分或全部寫入數據文件中。本實施例,在選擇預先設置的腳本文件之前,會首先確定與源數據庫是否連接成 功,在確定連接成功后再執行選擇預先設置的腳本文件操作。本實施例的判斷腳本是否正確的操作,是通過判斷腳本文件中的結構化查詢語言 (SQL)語句是否符合SQL語法,如果腳本文件中的SQL語句符合SQL語法,則認為腳本文件 正確。本實施例中,腳本文件中指定的數據表相關信息包括一個或多個。若指定的數據 表相關信息為多個時,則按照一定的順序一個一個地順序獲取指定的數據表相關信息,且 每獲取一個指定的數據表相關信息后,便從源數據庫指定的數據表中導出數據,并將導出 的數據和所述指定的數據表相關信息部分或全部寫入數據文件中,直至所有導出的數據和 對應的數據表相關信息都寫入數據文件。另外每將一個導出的數據和對應的數據表相關信 息寫入數據文件的同時,記錄數據導出成功日志。另外,本實施例中,若根據實際情況,數據文件需要壓縮,則在將所有導出的數據 和對應的指定的數據表相關信息寫入數據文件后,將數據文件進行壓縮。進一步地,上述實施例的步驟S102之后還包括如下處理當腳本文件錯誤和/或 腳本文件中指定的數據表不存在時,記錄數據導出失敗日志。另外,上述實施例中,在選擇預先設置的腳本文件之前,還預先設置有數據導出配 置參數,若該配置參數中包含有允許數據導出出錯和允許出錯次數信息時,則當某一數據 導出失敗,記錄該次數據導出失敗日志,然后導出下一個數據。如若允許數據導出出錯兩 次,則所有的數據導出過程中,允許其中兩個數據導出失敗。若存在第三次數據導出失敗, 則退出數據導出流程,表明整個數據導出操作失敗。若該配置參數中不包含允許數據導出 出錯信息,則當某一數據導出失敗,則直接退出數據導出流程,表明整個數據導出操作失 敗。進一步地,上述實施例中的指定的數據表相關信息包括指定的數據表對應的源 數據庫類型信息、指定的數據表結構信息和指定的數據表索引信息。其中,上述指定的數據 表對應的源數據庫類型信息,為后續的數據導入操作中判斷源數據庫與目標數據庫類型是 否一致提供對比信息。上述指定的數據表結構信息包括有指定的數據表所占空間的起始點 和結束點信息,因此根據該指定的數據表結構信息可以知曉該指定的數據表的所占空間大 小。上述指定的數據表索引信息用以在目標數據庫中創建數據表索引。參見圖2,提出本發明的數據導出的裝置10 —實施例,其包括導出選擇模塊11、 導出判斷模塊12、導出獲取模塊13、和導出數據模塊14。其中,選擇模塊11,用于選擇預設 設置的腳本文件。導出判斷模塊12,用于判斷腳本文件是否正確和腳本文件中指定的數據 表是否存在。導出獲取模塊13,用于當腳本文件正確,且指定的數據表存在,提取腳本文件 中指定的數據表相關信息。導出數據模塊14,用于根據指定的數據表相關信息從源數據庫 中所述指定的數據表導出數據,并將導出的數據和所述指定的數據表相關信息部分或全部 寫入數據文件中。本實施例中,數據導出的裝置10在選擇預先設置的腳本文件之前,會首先確定自 身與源數據庫是否連接成功,在確定連接成功后再執行選擇預先設置的腳本文件操作。本實施例的判斷腳本是否正確的操作,是通過判斷腳本文件中的SQL語句是否符
7合SQL語法,如果腳本文件中的SQL語句符合SQL語法,則認為腳本文件正確。本實施例中,腳本文件中指定的數據表相關信息包括一個或多個。若指定的數據 表相關信息為多個時,則數據導出的裝置10按照一定的順序一個一個地順序獲取指定的 數據表相關信息,且每獲取一個指定的數據表相關信息后,便從源數據庫指定的數據表中 導出數據,并將導出的數據和所述指定的數據表相關信息部分或全部寫入數據文件中,直 至所有導出的數據和所述指定的數據表相關信息都寫入數據文件。另外數據導出的裝置 10,每將一個導出的數據和對應的數據表相關信息寫入數據文件的同時,記錄數據導出成 功曰志。另外,本實施例中,若根據實際情況,數據文件需要壓縮,則在將所有導出的數據 和對應的指定的數據表相關信息寫入數據文件后,將數據文件進行壓縮。進一步地,參見圖3,提出本發明的數據導出的裝置20另一實施例,其包括導出 選擇模塊21、導出判斷模塊22、導出獲取模塊23、導出數據模塊24和導出記錄模塊25。其 中,導出選擇模塊21、導出判斷模塊22、導出獲取模塊23、導出數據模塊24分別與上述實施 例中的相同名稱的模塊功能一致,再此不再贅述。導出記錄模塊25,用于當腳本文件錯誤和 /或腳本文件中指定的數據表不存在時,記錄數據導出失敗日志。另外,上述實施例中,數據導出裝置20預先設置有數據導出配置參數,若該配置 參數中包含有允許數據導出出錯和允許出錯次數信息時,則當某一數據導出失敗,記錄該 次數據導出失敗日志,然后導出下一個數據。如若允許數據導出出錯兩次,則所有數據導出 過程中,允許其中兩個數據導出失敗。若存在第三次數據導出失敗,則數據導出的裝置20 退出數據導出流程,表明整個數據導出操作失敗。若該配置參數中不包含允許數據導出出 錯信息,則當某一數據導出失敗,數據導出的裝置20直接退出數據導出流程,表明整個數 據導出操作失敗。進一步地,上述實施例的數據導出的裝置20中的指定的數據表相關信息包括指 定的數據表對應的源數據庫類型信息、指定的數據表結構信息和指定的數據表索引信息。 其中,上述指定的數據表對應的源數據庫類型信息,為后續的數據導入操作中判斷源數據 庫與目標數據庫類型是否一致提供對比信息。上述指定的數據表結構信息包括有指定的數 據表所占空間的起始點和結束點信息,因此根據該指定的數據表結構信息可以知曉該指定 的數據表的所占空間大小。上述指定的數據表索引信息用以在目標數據庫中創建數據表索 引。參見圖4,提出本發明的數據導入的方法一實施例,其包括步驟S201、選擇待導入的數據文件;步驟S202、判斷待導入的數據文件對應的源數據庫類型與目標數據庫類型是否一 致;步驟S203、當不一致時,將所述數據文件中的數據表相關信息轉換為符合目標數 據庫類型的數據表相關信息;步驟S204、將轉換后的數據表相關信息對應的數據導入目標數據庫。本實施例中,在選擇待導入的數據文件之前,會首先確定自身與目標數據庫是否 連接成功,在確定連接成功后再執行選擇待導入的數據文件操作。本實施例中,當待導入的數據文件為壓縮文件,則在選擇待導入的數據文件后,將該待導入的數據文件進行解壓。參見圖5,上述實施例中的將轉換后的數據表相關信息對應的數據導入目標數據 庫具體包括步驟S301、判斷目標數據庫中是否存在與所述數據表相關信息對應的數據表;若 是,則轉入步驟S302 ;若否,則轉入步驟S303 ;步驟S302、將轉換后的數據表相關信息對應的數據導入目標數據庫中對應的數據 表內;步驟S303、調用目標數據庫中相關接口創建與數據表相關信息對應的數據表,并 將轉換后的數據表相關信息對應的數據導入所述創建的數據表內。本實施例中,數據文件中包括具體的數據和數據表相關信息,其中數據表相關信 息包括數據表對應的源數據庫類型信息、數據表結構信息。其中,數據表對應的源數據庫 類型就是上述待導入的數據文件對應的源數據庫類型。數據表結構信息包括有數據所占空 間的起始點和結束點信息,因此根據數據表結構信息可以知曉數據表的所占空間大小。另 外,數據表相關信息還可以包括數據表索引信息。進一步地,上述實施例中的步驟S202之后還包括如下處理將所述數據文件中的 數據導入目標數據庫。該將所述數據文件中的數據導入目標數據庫的操作具體又包括如下 處理若待導入的數據文件對應的源數據庫類型與目標數據庫類型一致,判斷目標數據庫 中是否存在與所述數據表相關信息對應的數據表;若是,則將所述數據文件中的數據導入 目標數據庫中對應的數據表內;若否,則調用目標數據庫中相關接口創建與所述數據表相 關信息對應的數據表,并將所述數據文件中的數據導入所述創建的數據表內。參見圖6,提出本發明的數據導入的裝置30—實施例,其包括導入選擇模塊31、 導入判斷模塊32、導入轉換模塊33和導入數據模塊34。其中,導入選擇模塊31,用于選擇 待導入的數據文件。導入判斷模塊32,用于判斷待導入的數據文件對應的源數據庫類型與 目標數據庫類型是否一致。導入轉換模塊33,用于當待導入的數據文件對應的源數據庫類 型與目標數據庫類型不一致時,將所述數據文件中的數據表相關信息轉換為符合目標數據 庫類型的數據表相關信息。導入數據模塊34,用于將轉換后的數據表相關信息對應的數據 導入目標數據庫。本實施例中,數據導入的裝置30在選擇待導入的數據文件之前,會首先確定自身 與目標數據庫是否連接成功,在確定連接成功后再執行選擇待導入的數據文件操作。本實施例中,當待導入的數據文件為壓縮文件,則數據導入的裝置30在選擇待導 入的數據文件后,將該待導入的數據文件進行解壓。進一步地,參見圖7,上述實施例中的導入數據模塊34包括判斷單元341、導入單 元342和調用單元343。其中,判斷單元341,用于判斷目標數據庫中是否存在與所述數據 表相關信息對應的數據表。導入單元342,用于當目標數據庫中存在與所述數據表相關信息 對應的數據表時,將轉換后的數據表相關信息對應的數據導入目標數據庫中對應的數據表 內。調用單元343,用于當目標數據庫中不存在于所述數據表相關信息對應的數據表時,調 用目標數據庫中相關接口創建與數據表相關信息對應的數據表,并通過導入單元342將轉 換后的數據表相關信息對應的數據導入所述創建的數據表內。本實施例中,數據文件中包括具體的數據和數據表相關信息,其中數據表相關信息包括數據表對應的源數據庫類型信息、數據表結構信息。其中,數據表對應的源數據庫 類型就是上述待導入的數據文件對應的源數據庫類型。數據表結構信息包括有數據表所占 空間的起始點和結束點信息,因此根據數據表結構信息可以知曉數據表的所占空間大小。 另外,數據表相關信息還可以包括數據表索引信息。進一步地,上述實施例中的導入數據模塊34,還用于當待導入的數據文件對應的 源數據庫類型與目標數據庫類型一致時,將所述數據文件中的數據導入目標數據庫。此時, 導入數據模塊34中的導入單元342,還用于當目標數據庫中存在與所述數據表相關信息 對應的數據表時,將所述數據文件中的數據導入目標數據庫中對應的數據表內。調用單元 343,還用于當目標數據庫中不存在與所述指定的數據表相關信息對應的數據表時,調用目 標數據庫中相關接口創建與所述數據表相關信息對應的數據表,并通過導入單元342將所 述數據文件中的數據導入所述創建的數據表內。由上可知,通過本發明提供的數據導出、導入的方法和裝置,可實現不同類型的數 據庫間數據轉移,數據轉移速度快、應用范圍廣、靈活性好。應當理解的是,以上僅為本發明的優選實施例,不能因此限制本發明的專利范圍, 凡是利用本發明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在 其他相關的技術領域,均同理包括在本發明的專利保護范圍內。
權利要求
一種數據導出的方法,其特征在于,包括步驟選擇預先設置的腳本文件;判斷腳本文件是否正確和腳本文件中指定的數據表是否存在;當腳本文件正確,且指定的數據表存在,提取腳本文件中指定的數據表相關信息;根據指定的數據表相關信息從源數據庫中所述指定的數據表導出數據,并將導出的數據和所述指定的數據表相關信息部分或全部寫入數據文件中。
2.根據權利要求1所述的數據導出的方法,其特征在于,所述判斷腳本文件是否正確 和腳本文件中指定的數據表是否存在之后還包括當腳本文件錯誤和/或腳本文件中指定的數據表不存在時,記錄數據導出失敗日志。
3.根據權利要求1或2所述的數據導出的方法,其特征在于,所述指定的數據表相關信 息包括指定的數據表對應的源數據庫類型信息、指定的數據表結構信息和指定的數據表 索弓I f曰息o
4.一種數據導出的裝置,其特征在于,包括 導出選擇模塊,用于選擇預設設置的腳本文件;導出判斷模塊,用于判斷腳本文件是否正確和腳本文件中指定的數據表是否存在; 導出獲取模塊,用于當腳本文件正確,且指定的數據表存在,提取腳本文件中指定的數 據表相關信息;導出數據模塊,用于根據指定的數據表相關信息從源數據庫中所述指定的數據表導出 數據,并將導出的數據和所述指定的數據表相關信息部分或全部寫入數據文件中。
5.根據權利要求4所述的數據導出的裝置,其特征在于,還包括導出記錄模塊,用于當腳本文件錯誤和/或腳本文件中指定的數據表不存在時,記錄 數據導出失敗日志。
6.根據權利要求4或5所述的數據導出的裝置,其特征在于,所述指定的數據表相關信 息包括指定的數據表對應的源數據庫類型信息、指定的數據表結構信息和指定的數據表 索弓I f曰息o
7.一種數據導入的方法,其特征在于,包括步驟 選擇待導入的數據文件;判斷待導入的數據文件對應的源數據庫類型與目標數據庫類型是否一致; 當不一致時,將所述數據文件中的數據表相關信息轉換為符合目標數據庫類型的數據 表相關信息;將轉換后的數據表相關信息對應的數據導入目標數據庫。
8.根據權利要求7所述的數據導入的方法,其特征在于,所述將轉換后的數據表相關 信息對應的數據導入目標數據庫具體包括判斷目標數據庫中是否存在與所述數據表相關信息對應的數據表; 若是,將轉換后的數據表相關信息對應的數據導入目標數據庫中對應的數據表內; 若否,調用目標數據庫中相關接口創建與數據表相關信息對應的數據表,并將轉換后 的數據表相關信息對應的數據導入所述創建的數據表內。
9.根據權利要求7或8所述的數據導入的方法,其特征在于,所述判斷待導入的數據文 件對應的源數據庫類型與目標數據庫類型是否一致之后還包括若是,判斷目標數據庫中是否存在與所述數據表相關信息對應的數據表; 若是,將所述數據文件中的數據導入目標數據庫中對應的數據表內; 若否,調用目標數據庫中相關接口創建與所述數據表相關信息對應的數據表,并將所 述數據文件中的數據導入所述創建的數據表內。
10.一種數據導入的裝置,其特征在于,包括 導入選擇模塊,用于選擇待導入的數據文件;導入判斷模塊,用于判斷待導入的數據文件對應的源數據庫類型與目標數據庫類型是否一致;導入轉換模塊,用于當待導入的數據文件對應的源數據庫類型與目標數據庫類型不 一致時,將所述數據文件中的數據表相關信息轉換為符合目標數據庫類型的數據表相關信 息;導入數據模塊,用于將轉換后的數據表相關信息對應的數據導入目標數據庫。
11.根據權利要求10所述的數據導入的裝置,其特征在于,所述導入數據模塊包括 判斷單元,用于判斷目標數據庫中是否存在與所述數據表相關信息對應的數據表;導入單元,用于當目標數據庫中存在與所述數據表相關信息對應的數據表時,將轉換 后的數據表相關信息對應的數據導入目標數據庫中對應的數據表內;調用單元,用于當目標數據庫中不存在與所述數據表相關信息對應的數據表時,調用 目標數據庫中相關接口創建與數據表相關信息對應的數據表,并通過導入單元將轉換后的 數據表相關信息對應的數據導入所述創建的數據表內。
12.根據權利要求10或11所述的數據導入的裝置,其特征在于,所述導入單元,還用于當目標數據庫中存在與所述數據表相關信息對應的數據表時, 將所述數據文件中的數據導入目標數據庫對應的數據表內;所述調用模塊,還用于當目標數據庫中存在與所述數據表相關信息對應的數據表時, 調用目標數據庫中相關接口創建與所述數據表相關信息對應的數據表,并通過導入單元將 所述數據文件中的數據導入所述創建的數據表內。
全文摘要
本發明公開了一種數據導出、導入的方法和裝置,其中數據導出的方法包括選擇預先設置的腳本文件;判斷腳本文件是否正確和腳本文件中指定的數據表是否存在;當腳本文件正確,且指定的數據表存在,提取腳本文件中指定的數據表相關信息;根據指定的數據表相關信息從源數據庫所述指定的數據表導出數據,將導出的數據和指定的數據表相關信息部分或全部寫入數據文件中。本發明提供的數據導出的方法和裝置、數據導入的方法和裝置,可實現不同類型的數據庫間數據轉移,數據轉移速度快、應用范圍廣、靈活性好。
文檔編號G06F17/30GK101944128SQ201010292170
公開日2011年1月12日 申請日期2010年9月25日 優先權日2010年9月25日
發明者沈菲菲 申請人:中興通訊股份有限公司
網友詢問留(liu)言(yan) 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1