分享方式:


載入數據

適用於: 檢查標示為是 Databricks Runtime

從使用者指定的目錄或檔案將數據載入 Hive SerDe 資料表。 如果指定目錄,則會載入目錄中的所有檔案。 如果指定檔案,則只會載入單一檔案。 此外,語句會 LOAD DATA 採用選擇性的數據分割規格。 指定分割區時,數據檔(輸入來源為目錄時)或單一檔案(輸入來源為檔案時)會載入目標數據表的數據分割。

如果快取數據表,命令會清除資料表的快取數據,以及參考數據表的所有相依專案。 下次存取數據表或相依專案時,快取將會延遲填滿。

語法

LOAD DATA [ LOCAL ] INPATH path [ OVERWRITE ] INTO TABLE table_name [ PARTITION clause ]

參數

  • path

    檔案系統的路徑。 它可以是絕對路徑或相對路徑。

  • table_name

    識別要插入的數據表。 名稱不得包含 時態規格。 如果找不到數據表,Azure Databricks 就會 引發TABLE_OR_VIEW_NOT_FOUND 錯誤。

  • PARTITION 子句

    選擇性參數,指定插入的目標數據分割。 您也只能部分指定分割區。

  • 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