當您需要將大批量數據以附件(SQL、CSV、Excel)形式快速導入數據庫時,可以使用DMS的數據導入功能。
前提條件
數據庫類型如下:
MySQL:RDS MySQL、PolarDB MySQL版、MyBase MySQL、PolarDB分布式版、AnalyticDB for MySQL、其他來源MySQL。
SQL Server:RDS SQL Server、MyBase SQL Server、其他來源SQL Server。
PostgreSQL:RDS PostgreSQL、PolarDB PostgreSQL版、MyBase PostgreSQL、AnalyticDB for PostgreSQL、其他來源PostgreSQL。
MariaDB:RDS MariaDB、其他來源MariaDB。
OceanBase。
PolarDB PostgreSQL版(兼容Oracle)。
達夢數據庫。
DB2。
Oracle。
Redis。
MongoDB。
待導入數據的數據庫已登錄DMS。具體操作,請參見登錄數據庫。
已有目標數據庫的變更權限。
注意事項
單次導入的SQL、CSV、Excel類型的文件不能超過5 GB。
DMS支持上傳zip類型的附件。如果您需要在同一個工單中導入多個文件,可以將多個文件放在一個zip中,再進行上傳。
數據導入功能暫不支持在同一個工單對多個數據庫進行變更操作,如需對多個數據庫進行變更請提交普通數據變更工單。具體操作,請參見普通數據變更。
若批量數據導入腳本中包含了結構變更SQL,即使實例已開啟無鎖結構變更,該結構變更SQL也只能通過原生方式執行,不會通過無鎖結構變更的方式執行。
為避免執行批量數據導入過程中影響數據庫性能,建議您使用性能較好的SQL語句,如
INSERT
,主鍵索引的UPDATE
和DELETE
。
操作步驟
本操作以管控模式為安全協同的RDS MySQL數據庫為例介紹配置流程。
- 登錄數據管理DMS 5.0。
單擊控制臺左上角的圖標,選擇
。說明若您使用的是非極簡模式的控制臺,在頂部菜單欄中,選擇
。在數據變更工單申請頁面,配置工單參數信息。部分參數說明如下:
參數項
說明
數據庫
數據導入的目標數據庫。僅支持選擇一個數據庫。
說明管控模式為自由操作或穩定變更的實例數據庫需要登錄后方可選擇。
執行方式
工單的執行方式,系統默認選擇審批通過后,提交者執行。其他方式:
審批通過后,自動執行。
最后一個審批人執行。
文件編碼
數據庫的文件編碼,系統默認選擇自動識別。其他取值:
UTF-8。
GBK。
ISO-8859-1。
導入模式
數據導入模式,當前支持兩種導入模式:
極速模式:在執行階段讀取文件,將SQL語句直接執行到指定的目標庫。該模式安全性相比安全模式要低,但是執行時效較高。
說明安全規則配置默認未開啟支持極速模式導入數據。您可以在實例關聯的
中開啟該檢測項。安全模式:預檢查階段會解析文件并將SQL或CSV數據緩存入庫,執行時再從緩存庫中讀出來執行到指定的目標庫。該模式安全性較好,但是執行時效相比極速模式要低。
文件類型
選中導入數據的文件類型:
SQL腳本:安全協同模式下,默認僅放開INSERT和REPLACE命令類型。如需調整,可以由DBA或管理員在安全規則 > SQL變更 > 批量數據導入中修改。
CSV格式:文件中的分隔符必須為逗號。
Excel格式:Excel文件中可以有表頭(屬性),也可以直接是數據。
目標表
選擇導入數據的目標表。
說明當文件類型選擇CSV或Excel格式時,會出現該參數項。
數據位置
選擇數據的位置:
第1行為屬性:表格首行是字段名。
第1行為數據:表格首行是數據。
寫入方式
選擇文件的寫入方式:
INSERT:插入數據時數據庫會檢查主鍵(PrimaryKey),如果出現重復會報錯。
INSERT_IGNORE:如果表中已經存在相同的記錄,則忽略當前新數據。
REPLACE_INTO:如果表中已經有某行數據(根據主鍵或者唯一索引判斷),則先刪除此行數據,然后插入新的數據。
說明RDS MySQL、PolarDB MySQL版、PolarDB分布式版、AnalyticDB for MySQL、OceanBase數據庫類型支持3種寫入方式:
INSERT INTO
、INSERT IGNORE
、REPLACE INTO
。其他數據庫僅支持INSERT INTO
寫入。附件
支持上傳本地文件和上傳OSS文件。
如果您需要上傳存儲在OSS中的文件,則首先需要將目標OSS數據源錄入至DMS。錄入完成后,再單擊上傳OSS文件,選擇目標Bucket并填入文件路徑(例如
examplefolder/example.sql
)。說明支持SQL、CSV、TXT、XLSX和ZIP文件類型。
導入的附件最大不能超過5 GB。
錄入OSS數據源的操作,請參見云數據庫錄入。
其他選項(可選)
選擇是否忽略異常報錯。
不忽略(不選中):系統默認。系統遇到異常會停止執行后續SQL并報錯。
忽略(選中):系統執行失敗會忽略異常,并繼續執行后續SQL。
回滾SQL(可選)
文本:在下方輸入框中填入回滾SQL。
附件:上傳回滾SQL文件。
說明支持SQL、TXT和ZIP文件類型。
回滾文件最大不能超過15 MB。
變更相關人(可選)
設置的相關人員都可以查看工單,并協同工作,非相關人員則不能查看工單(管理員、DBA除外)。
單擊提交申請,等待系統預檢查通過,如果預檢查失敗,請根據提示檢查失敗原因后單擊重試。
說明系統會預檢查您上傳的SQL,如果是CSV文件,會生成相應的
INSERT
語句。若在預檢查的類型檢查階段出現報錯,需要根據報錯信息調整實例關聯的安全規則。具體操作,請參見數據變更。
在審批區域,單擊提交審批,在提示對話框中單擊確認。
待審批通過后,在執行區域,單擊執行變更。
在任務設置對話框中,選擇工單的執行方式。
執行方式如下:
立即執行:系統默認。單擊確定執行后,立即執行工單。
定時執行:選擇任務開始執行時間。單擊確定執行后,系統會在設定的時間自動執行任務。
說明執行期間,系統流式讀取已解析的SQL,分批執行到數據庫(每批大小1 MB)。
您可以在執行區域,查看任務執行狀態、任務SQL檢查詳情和調度日志。
已暫停的任務,重啟后,會根據導入模式選擇從頭執行任務,還是從暫停位置執行。
極速模式:暫停任務后重啟,將從頭開始執行腳本或導入數據文件。
安全模式:暫停任務后重啟,將從暫停位置繼續執行腳本或導入數據文件。
當出現任務執行完成提示后,表示數據導入工單完成。
(可選)查詢導入的數據。
前往SQL Console頁面查詢導入的數據。具體操作,請參見SQL Console初體驗。
示例文件
常見問題
Q:執行數據導入時出現permission denied for schema XXXXX報錯如何處理?
A:報錯顯示當前在DMS登錄的數據庫賬號權限不足。您可以嘗試在DMS中登錄高權限的數據庫賬號,再重試導入,或嘗試將數據導入到其他公共數據庫。切換數據庫賬號操作,請參見編輯實例。
如果上述方法仍無法解決問題,可以嘗試使用數據傳輸服務DTS進行數據遷移。更多信息,請參見遷移方案概覽。
Q:數據導入工單預檢查失敗,提示不允許提交XXXX變更語句,該如何處理?
A:管理員或DBA需要修改SQL變更安全規則,允許在導入時執行某類型SQL。如下以補充允許提交CREATE_TABLE為例:
在DMS控制臺中,找到并進入安全規則功能頁面。
編輯目標規則,在規則詳情頁左側區域單擊SQL變更。
選擇批量數據導入規則,并單擊允許批量導入插入語句規則右側的編輯。
增加CREATE_TABLE類型的SQL,單擊提交。更多信息,請參見SQL變更。
規則修改后,請您返回到數據導入工單詳情頁,在預檢查區域單擊重試。
Q:如果待上傳的附件大于5 GB,該如何進行操作?
A:您可以根據實際的業務情況選擇操作方法:
拆分附件,提交多個工單進行上傳。
使用Navicat遠程連接數據庫,再進行上傳附件。