全部产品
Search
文档中心

AnalyticDB:Gunakan LOAD DATA untuk mengimpor data ke Data Warehouse Edition

更新时间:Jul 06, 2025

Topik ini menjelaskan cara menggunakan pernyataan LOAD DATA untuk mengimpor data lokal ke AnalyticDB for MySQL Data Warehouse Edition.

Sintaksis

LOAD DATA LOCAL 
    INFILE 'file_name' 
    [REPLACE | IGNORE] 
    INTO TABLE table_name 
    [{FIELDS | COLUMNS}
        [TERMINATED BY 'string'] 
        [[OPTIONALLY] ENCLOSED BY 'char'] 
    ]
    [LINES
        [TERMINATED BY 'string'] 
    ]
    [IGNORE number {LINES | ROWS}] 
    [(column_name_or_user_var
    [, column_name_or_user_var] ...)]    

Parameter

Parameter

Deskripsi

LOAD DATA LOCAL INFILE

Mengimpor data dari file lokal. Semua file teks didukung.

Catatan
  • Kluster AnalyticDB for MySQL versi 3.1.10.2 atau lebih baru dan versi 3.2.0 atau lebih baru memungkinkan Anda mengimpor data dari file CSV. Secara default, file CSV sesuai dengan standar OpenCSV. Anda dapat mengonfigurasi pemisah kustom, tetapi tidak pemisah baris atau pengakhiran kolom, untuk file CSV.

  • Untuk menonaktifkan standar OpenCSV untuk file CSV, Anda dapat mengeksekusi pernyataan SET adb_config LOAD_CSV_DATA_WITH_OPENCSV_FORMAT=false.

file_name

Path file lokal. Path terdiri dari direktori dan nama file.

Catatan

Jika path yang ditentukan oleh parameter file_name adalah path relatif, path file lokal bersifat relatif terhadap path klien.

table_name

Nama tabel AnalyticDB for MySQL.

REPLACE

Menimpa data yang ada dengan data yang ingin diimpor saat kunci primer duplikat digunakan.

IGNORE

Mengabaikan baris yang gagal diimpor saat kunci primer duplikat digunakan atau terjadi kesalahan data. Baris tertentu mungkin gagal diimpor.

[FIELDS] TERMINATED BY 'string'

Pemisah yang digunakan untuk memisahkan kolom data. Nilai defaultnya adalah \t, sama seperti pemisah kolom dalam database MySQL.

[FIELDS] ENCLOSED BY 'char'

Karakter yang digunakan untuk mengapit data setiap kolom.

Sebagai contoh, jika data kolom adalah "a" dan Anda menentukan klausa ENCLOSED BY "", tanda kutip ganda ("") dihapus dari "a" sebelum data diimpor.

[LINES] TERMINATED BY 'string'

Pemisah yang digunakan untuk memisahkan baris data. Nilai defaultnya adalah \n.

IGNORE number LINES

Jumlah baris dari awal yang ingin Anda abaikan saat mengimpor data.

Sebagai contoh, IGNORE 1 LINES menentukan bahwa baris pertama data diabaikan dan tidak diimpor ke tabel AnalyticDB for MySQL.

(column_name_or_user_var,...)

Kolom yang ingin Anda impor. Jika Anda tidak menentukan parameter ini, data diimpor berdasarkan urutan kolom.

  • Jika jumlah kolom yang ingin Anda impor lebih besar daripada jumlah kolom dalam tabel AnalyticDB for MySQL, sistem akan mengabaikan kolom tambahan.

  • Jika jumlah kolom yang ingin Anda impor lebih kecil daripada jumlah kolom dalam tabel AnalyticDB for MySQL, kolom yang tidak diisi dengan data impor akan diisi dengan nilai default.

Catatan Penggunaan

  • Anda harus mengaktifkan fitur local-infile pada klien.

    Sebagai contoh, tambahkan konfigurasi berikut ke file my.cnf untuk mengaktifkan fitur local-infile pada klien MySQL:

    cat ~/.my.cnf
    [mysqld]
    local-infile
    [mysql]
    local-infile                    

    Untuk informasi lebih lanjut tentang file my.cnf, lihat dokumentasi resmi MySQL.

  • Impor data tidak menjamin atomicitas operasi.

    • Dalam mode IGNORE, baris data yang gagal diimpor akan diabaikan.

    • Dalam mode REPLACE, operasi INSERT berikutnya dihentikan jika baris data gagal diimpor, sehingga baris tertentu mungkin tidak diimpor.

  • Anda dapat mengeksekusi pernyataan SHOW WARNINGS untuk memeriksa pesan kesalahan baris yang gagal.

Contoh

Pada contoh ini, data dari file lokal bernama out.bak diimpor ke tabel AnalyticDB for MySQL bernama test. File out.bak berisi 5.000 baris data. Pemisah kolom adalah \t, dan pemisah baris adalah \n. Baris kedelapan data tidak valid, seperti ditunjukkan dalam entri data berikut:

1 bb
2 bb
3 bb
4 bb
5 bb
6 bb
7 bb
bb   8
9 bb
...          
  1. Hubungkan ke kluster AnalyticDB for MySQL yang ingin Anda kelola. Eksekusi pernyataan CREATE DATABASE dan CREATE TABLE untuk membuat tabel bernama test dalam database bernama adb_demo untuk menyimpan data yang ingin Anda impor dari file lokal.

    CREATE TABLE test (
    a int NOT NULL DEFAULT '0', 
    b varchar NOT NULL, 
    PRIMARY KEY (a) 
    ) DISTRIBUTED by HASH(a);                
  2. Eksekusi pernyataan LOAD DATA pada klien MySQL untuk mengimpor data dari file lokal bernama out.bak ke tabel AnalyticDB for MySQL bernama test.

    • Eksekusi pernyataan LOAD DATA dalam mode IGNORE. Dalam mode ini, baris tertentu mungkin gagal diimpor. Contoh pernyataan:

      LOAD DATA LOCAL INFILE '~/out.bak' IGNORE INTO TABLE test FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' ;

      Eksekusi pernyataan berikut untuk memeriksa hasil impor:

      SELECT COUNT(1) FROM test;
      +----------+
      | count(1) |
      +----------+
      |     4999 |
      +----------+
      1 row in set (0.14 sec)
    • Eksekusi pernyataan LOAD DATA dalam mode REPLACE. Dalam mode ini, operasi impor berikutnya segera dihentikan jika baris gagal diimpor. Contoh pernyataan:

      LOAD DATA LOCAL INFILE '~/out.bak' REPLACE INTO TABLE test FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' ;

      Contoh hasil:

      ERROR 1064 (42000): [13000, 2019061210070703000511314203303000266] syntax error :syntax error => IDENTIFIER is not value type pos:34 row: 0 and ceil:0
    • Eksekusi pernyataan LOAD DATA untuk melewati 10 baris pertama data saat mengimpor. Contoh pernyataan:

      LOAD DATA LOCAL INFILE '~/out.bak' REPLACE INTO TABLE test FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' IGNORE 10 LINES;

      Contoh hasil:

      Query OK, 4990 rows affected (0.37 sec)