LOAD DATA
適用於: Databricks Runtime
從使用者指定的目錄或檔案將數據載入 Hive SerDe 資料表。 如果指定目錄,則會載入目錄中的所有檔案。 如果指定檔案,則只會載入單一檔案。 此外,LOAD DATA
陳述可以採用選擇性的分割規格。 指定分割區時,數據檔(輸入來源為目錄時)或單一檔案(輸入來源為檔案時)會載入目標數據表的數據分割。
如果資料表已被快取,該命令會清除此資料表的快取數據,以及所有依賴於它的相依項目。 下次存取數據表或相依專案時,快取將會延遲填滿。
語法
LOAD DATA [ LOCAL ] INPATH path [ OVERWRITE ] INTO TABLE table_name [ PARTITION clause ]
參數
path
檔案系統的路徑。 它可以是絕對路徑或相對路徑。
-
識別要插入的數據表。 名稱不得包含 時態規格或選項規格。 如果找不到資料表,Azure Databricks 就會引發 TABLE_OR_VIEW_NOT_FOUND 錯誤。
-
可選參數,指定用於插入操作的目標分區。 您也只能部分指定分割區。
LOCAL
如果指定,它會導致
INPATH
針對本機文件系統解析 ,而不是預設文件系統,這通常是分散式記憶體。改寫
根據預設,新數據會附加至數據表。 如果使用
OVERWRITE
,則會用新的數據直接覆蓋現有的數據表。
範例
-- Example without partition specification.
-- Assuming the students table has already been created and populated.
> SELECT * FROM students;
name address student_id
--------- ---------------------- ----------
Amy Smith 123 Park Ave, San Jose 111111
> CREATE TABLE test_load (name VARCHAR(64), address VARCHAR(64), student_id INT) USING HIVE;
-- Assuming the students table is in '/user/hive/warehouse/'
> LOAD DATA LOCAL INPATH '/user/hive/warehouse/students' OVERWRITE INTO TABLE test_load;
> SELECT * FROM test_load;
name address student_id
--------- ---------------------- ----------
Amy Smith 123 Park Ave, San Jose 111111
-- Example with partition specification.
> CREATE TABLE test_partition (c1 INT, c2 INT, c3 INT) PARTITIONED BY (c2, c3);
> INSERT INTO test_partition PARTITION (c2 = 2, c3 = 3) VALUES (1);
> INSERT INTO test_partition PARTITION (c2 = 5, c3 = 6) VALUES (4);
> INSERT INTO test_partition PARTITION (c2 = 8, c3 = 9) VALUES (7);
> SELECT * FROM test_partition;
c1 c2 c3
--- --- ---
1 2 3
4 5 6
7 8 9
> CREATE TABLE test_load_partition (c1 INT, c2 INT, c3 INT) USING HIVE PARTITIONED BY (c2, c3);
-- Assuming the test_partition table is in '/user/hive/warehouse/'
> LOAD DATA LOCAL INPATH '/user/hive/warehouse/test_partition/c2=2/c3=3'
OVERWRITE INTO TABLE test_load_partition PARTITION (c2=2, c3=3);
> SELECT * FROM test_load_partition;
c1 c2 c3
--- --- ---
1 2 3