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