أنماط تحميل البيانات الشائعة باستخدام COPY INTO
تعرف على الأنماط الشائعة لاستخدام COPY INTO
لتحميل البيانات من مصادر الملفات إلى Delta Lake.
هناك العديد من الخيارات لاستخدام COPY INTO
. يمكنك أيضا استخدام بيانات الاعتماد المؤقتة مع COPY INTO مع هذه الأنماط.
راجع COPY INTO للحصول على مرجع كامل لجميع الخيارات.
إنشاء جداول هدف ل COPY INTO
COPY INTO
يجب أن يستهدف جدول Delta موجود. في Databricks Runtime 11.3 LTS وما فوق، يعد تعيين المخطط لهذه الجداول اختياريا للتنسيقات التي تدعم تطور المخطط:
CREATE TABLE IF NOT EXISTS my_table
[(col_1 col_1_type, col_2 col_2_type, ...)]
[COMMENT <table-description>]
[TBLPROPERTIES (<table-properties>)];
لاحظ أنه لاستنتاج المخطط باستخدام COPY INTO
، يجب تمرير خيارات إضافية:
COPY INTO my_table
FROM '/path/to/files'
FILEFORMAT = <format>
FORMAT_OPTIONS ('inferSchema' = 'true')
COPY_OPTIONS ('mergeSchema' = 'true');
ينشئ المثال التالي جدول Delta بلا مخطط يسمى my_pipe_data
ويحمل CSV محددا بالأنابيب بعنوان:
CREATE TABLE IF NOT EXISTS my_pipe_data;
COPY INTO my_pipe_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path'
FILEFORMAT = CSV
FORMAT_OPTIONS ('mergeSchema' = 'true',
'delimiter' = '|',
'header' = 'true')
COPY_OPTIONS ('mergeSchema' = 'true');
تحميل بيانات JSON باستخدام COPY INTO
يقوم المثال التالي بتحميل بيانات JSON من خمسة ملفات في Azure Data Lake Storage Gen2 (ADLS Gen2) في جدول Delta المسمى my_json_data
. يجب إنشاء هذا الجدول قبل COPY INTO
تنفيذه. إذا تم تحميل أي بيانات بالفعل من أحد الملفات، فلن يتم إعادة تحميل البيانات لهذا الملف.
COPY INTO my_json_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path'
FILEFORMAT = JSON
FILES = ('f1.json', 'f2.json', 'f3.json', 'f4.json', 'f5.json')
-- The second execution will not copy any data since the first command already loaded the data
COPY INTO my_json_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path'
FILEFORMAT = JSON
FILES = ('f1.json', 'f2.json', 'f3.json', 'f4.json', 'f5.json')
تحميل بيانات Avro مع COPY INTO
يقوم المثال التالي بتحميل بيانات Avro في ADLS Gen2 باستخدام تعبيرات SQL إضافية كجزء من العبارة SELECT
.
COPY INTO my_delta_table
FROM (SELECT to_date(dt) dt, event as measurement, quantity::double
FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path')
FILEFORMAT = AVRO
تحميل ملفات CSV مع COPY INTO
يقوم المثال التالي بتحميل ملفات CSV من Azure Data Lake Storage Gen2 ضمن abfss://container@storageAccount.dfs.core.windows.net/base/path/folder1
في جدول Delta في abfss://container@storageAccount.dfs.core.windows.net/deltaTables/target
.
COPY INTO delta.`abfss://container@storageAccount.dfs.core.windows.net/deltaTables/target`
FROM (SELECT key, index, textData, 'constant_value'
FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path')
FILEFORMAT = CSV
PATTERN = 'folder1/file_[a-g].csv'
FORMAT_OPTIONS('header' = 'true')
-- The example below loads CSV files without headers in ADLS Gen2 using COPY INTO.
-- By casting the data and renaming the columns, you can put the data in the schema you want
COPY INTO delta.`abfss://container@storageAccount.dfs.core.windows.net/deltaTables/target`
FROM (SELECT _c0::bigint key, _c1::int index, _c2 textData
FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path')
FILEFORMAT = CSV
PATTERN = 'folder1/file_[a-g].csv'
تجاهل الملفات التالفة أثناء تحميل البيانات
إذا تعذرت قراءة البيانات التي تقوم بتحميلها بسبب مشكلة تلف، يمكن تخطي هذه الملفات عن طريق تعيين ignoreCorruptFiles
إلى true
في FORMAT_OPTIONS
.
ترجع نتيجة الأمر عدد الملفات التي COPY INTO
تم تخطيها بسبب تلف في num_skipped_corrupt_files
العمود. يظهر هذا المقياس أيضا في operationMetrics
العمود ضمن numSkippedCorruptFiles
بعد التشغيل DESCRIBE HISTORY
على جدول Delta.
لا يتم تعقب الملفات التالفة بواسطة COPY INTO
، لذلك يمكن إعادة تحميلها في تشغيل لاحق إذا تم إصلاح التلف. يمكنك معرفة الملفات التالفة عن طريق التشغيل COPY INTO
في VALIDATE
الوضع.
COPY INTO my_table
FROM '/path/to/files'
FILEFORMAT = <format>
[VALIDATE ALL]
FORMAT_OPTIONS ('ignoreCorruptFiles' = 'true')
إشعار
ignoreCorruptFiles
متوفر في Databricks Runtime 11.3 LTS وما فوق.