本文介紹在PolarDB-X中使用load data進行資料匯入的相關限制和注意事項。
注意事項
使用load data進行資料匯入時,load data語句並非一個事務,因此各種原因(如資料庫宕機等)可能導致部分資料插入,剩餘部分未插入。
用戶端需要開啟local-infile。
文法
LOAD DATA
[LOCAL]
INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number {LINES | ROWS}]
[(col_name_or_mask [, col_name_or_mask] ...)] 參數說明
參數名稱 | 說明 |
LOAD DATA [LOCAL] INFILE | 檔案位於服務端還是client端。 |
file_name | 使用相對路徑時,為相對於用戶端啟動時的路徑。 |
REPLACE | 匯入資料時,若遇到主鍵重複則強制用當前資料覆蓋已有資料。 |
IGNORE | 匯入資料時,若遇到主鍵重複則自動忽略該行。 |
[FIELDS] TERMINATED BY 'string' | 定義每行資料的分隔字元,預設為\t。 |
[FIELDS] ENCLOSED BY 'char' | 每列資料的包圍符。例如,某一列資料為"test",定義enclosed by '"'後,匯入資料時先將"test"前後的"移除,然後再匯入資料。 |
[LINES] TERMINATED BY 'string' | 定義行分隔字元,預設為\n。 |
IGNORE number LINES | 匯入資料時忽略開始的某幾行。例如, |
(col_name_or_mask [, col_name_or_mask] ...) |
|
樣本
建立測試表:
CREATE TABLE test ( a int(11) NOT NULL DEFAULT '0', b varchar(8) NOT NULL, PRIMARY KEY (a) ) DBPARTITION by hash(a);本地待匯入檔案:
x,y
test1,2
test2,3
test3,4
test4,5
test5,6
test7,8
test8,9load data語句:
LOAD DATA LOCAL INFILE '~/test.txt' IGNORE INTO TABLE test FIELDS TERMINATED BY ',' LINES STARTING BY 'test' TERMINATED BY '\n' IGNORE 1 LINES;結果如下:
select * from test order by a;
+------+------+
| a | b |
+------+------+
| 1 | 2 |
| 2 | 3 |
| 3 | 4 |
| 4 | 5 |
| 5 | 6 |
| 7 | 8 |
| 8 | 9 |
+------+------+
7 rows in set (0.02 sec)