نسخ البيانات من خادم FTP باستخدام مصنع بيانات Azure أو Synapse Analytics
ينطبق على: Azure Data Factory
Azure Synapse Analytics
تلميح
جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!
توضح هذه المقالة كيفية نسخ البيانات من خادم FTP. للتعرف على المزيد، اقرأ المقالات التمهيدية حول Azure Data Factory و Synapse Analytics.
القدرات المدعومة
موصل FTP هذا مدعوم للإمكانيات التالية:
القدرات المدعومة | IR |
---|---|
نشاط النسخ (مصدر/-) | (1) (2) |
نشاط البحث | (1) (2) |
نشاط GetMetadata | (1) (2) |
حذف النشاط | (1) (2) |
① وقت تشغيل تكامل Azure ② وقت تشغيل التكامل المستضاف ذاتيًا
يدعم موصل FTP هذا على نحو خاص:
- نسخ الملفات باستخدام مصادقة Basic أو Anonymous.
- نسخ الملفات كما هي أو تحليلها مع تنسيقات الملفات المدعومة وبرامج الضغط.
يدعم موصل FTP خادم FTP قيد التشغيل في الوضع الخامل. الوضع النشط غير مدعوم.
المتطلبات الأساسية
إذا كان مخزن البيانات الخاص بك موجوداً داخل شبكة محلية، أو شبكة Azure ظاهرية، أو Amazon Virtual Private Cloud، فأنت بحاجة إلى تكوين وقت تشغيل تكامل مستضاف ذاتياً للاتصال به.
إذا كان مخزن البيانات الخاص بك عبارة عن خدمة بيانات سحابية مُدارة، يمكنك استخدام Azure Integration Runtime. إذا كان الوصول مقتصراً على عناوين IP التي تمت الموافقة عليها في قواعد جدار الحماية، يمكنك إضافة عناوين IP لـ Azure Integration Runtime إلى قائمة السماح.
يمكنك أيضاً استخدام ميزة وقت تشغيل تكامل الشبكة الظاهرية المُدارة في Azure Data Factory للوصول إلى الشبكة المحلية دون تثبيت وقت تشغيل تكامل مستضاف ذاتياً وتكوينه.
لمزيد من المعلومات حول آليات وخيارات أمان الشبكة التي يدعمها Data Factory، راجع إستراتيجيات الوصول إلى البيانات.
الشروع في العمل
لتنفيذ نشاط النسخ باستخدام أحد المسارات، يمكنك استخدام إحدى الأدوات أو عدد تطوير البرامج التالية:
- أداة نسخ البيانات
- مدخل Azure
- The .NET SDK
- عدة تطوير برامج Python
- Azure PowerShell
- واجهة برمجة تطبيقات REST
- قالب Azure Resource Manager
إنشاء خدمة مرتبطة بـخادم FTP باستخدام واجهة المستخدم
استخدم الخطوات التالية لإنشاء خدمة مرتبطة إلى خادم FTP في واجهة مستخدم المدخل Azure.
استعرض للوصول إلى علامة التبويب "Manage" في مصنع بيانات Azure أو مساحة عمل Synapse، وحدد "Linked Services"، ثم انقر فوق "New":
ابحث عن FTP وحدد موصل "FTP".
قم بتكوين تفاصيل الخدمة، واختبر الاتصال، وأنشئ الخدمة المرتبطة الجديدة.
تفاصيل تكوين الموصل
توفر المقاطع التالية تفاصيل حول الخصائص المستخدمة لتعريف الكيانات الخاصة بـ FTP.
خصائص الخدمة المرتبطة
تُدعم الخصائص التالية لخدمة الارتباط في خادم FTP:
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية النوع إلى: FtpServer. | نعم |
مضيف | حدّد اسم أو عنوان IP لخادم FTP. | نعم |
المنفذ | حدد المنفذ الذي يستمع إليه خادم FTP. القيم المسموح بها هي: عدد صحيح، والقيمة الافتراضية هي 21. |
لا |
enableSsl | حيد ما إذا كان يجب استخدام FTP عبر قناة SSL/TLS. القيم المسموح بها هي "true" (افتراضي) و"false". |
لا |
enableServerCertificateValidation | حدد ما إذا كان التحقق من صحة شهادة الخادم TLS/SSL سيُمكن عند استخدامك FTP عبر قناة SSL/TLS. القيم المسموح بها هي "true" (افتراضي) و"false". |
لا |
نوع المصادقة | حدد نوع المصادقة. القيم المسموح بها هي: Basic، وAnonymous |
نعم |
userName | حدّد المستخدم الذي لديه حق الوصول إلى خادم FTP. | لا |
كلمة المرور | حدد كلمة المرور للمستخدم (userName). ضع علامة على هذا الحقل باعتباره SecureString لتخزينه بشكل آمن، أو قم بالإشارة إلى بيانات سرية مخزنة في Azure Key Vault. | لا |
connectVia | Integration Runtime الذي سيتم استخدامه للاتصال بمخزن البيانات. تعرف على المزيد من قسم المتطلبات الأساسية. إذا لم يتم تحديده، فإنه يستخدم Azure Integration Runtime الافتراضي. | لا |
إشعار
يدعم موصل FTP الوصول إلى خادم FTP مع عدم وجود تشفير أو تشفير صريحٍ لـ SSL/TLS; وهو لا يدعم التشفير الضمني لـ SSL/TLS.
مثال 1: استخدام مصادقة Anonymous
{
"name": "FTPLinkedService",
"properties": {
"type": "FtpServer",
"typeProperties": {
"host": "<ftp server>",
"port": 21,
"enableSsl": true,
"enableServerCertificateValidation": true,
"authenticationType": "Anonymous"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
مثال 2: استخدام المصادقة Basic
{
"name": "FTPLinkedService",
"properties": {
"type": "FtpServer",
"typeProperties": {
"host": "<ftp server>",
"port": 21,
"enableSsl": true,
"enableServerCertificateValidation": true,
"authenticationType": "Basic",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
خصائص مجموعة البيانات
للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف مجموعات البيانات، راجع مقالة مجموعات البيانات.
يدعم Azure Data Factory تنسيقات الملفات التالية. راجع كل مقالة للاطلاع على الإعدادات المستندة إلى التنسيق.
تُدعم الخصائص التالية لـ FTP ضمن location
الإعدادات في مجموعة البيانات المستندة إلى تنسيق:
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية النوع ضمن location في مجموعة البيانات إلى FtpServerLocation. |
نعم |
folderPath | المسار إلى المجلد. إذا أردت استخدام البدل لتصفية المجلد، فتخطَّ هذا الإعداد وحدد في إعدادات مصدر النشاط. | لا |
fileName | اسم الملف ضمن folderPath المحدد. إذا أردت استخدام البدل لتصفية الملفات، فتخطَّ هذا الإعداد وحدد في إعدادات مصدر النشاط. | لا |
مثال:
{
"name": "DelimitedTextDataset",
"properties": {
"type": "DelimitedText",
"linkedServiceName": {
"referenceName": "<FTP linked service name>",
"type": "LinkedServiceReference"
},
"schema": [ < physical schema, optional, auto retrieved during authoring > ],
"typeProperties": {
"location": {
"type": "FtpServerLocation",
"folderPath": "root/folder/subfolder"
},
"columnDelimiter": ",",
"quoteChar": "\"",
"firstRowAsHeader": true,
"compressionCodec": "gzip"
}
}
}
انسخ خصائص النشاط
للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف الأنشطة، راجع مقالة التدفقات. يوفر هذا القسم قائمة بالخصائص التي يدعمها مصدر FTP.
FTP كمصدر
يدعم Azure Data Factory تنسيقات الملفات التالية. راجع كل مقالة للاطلاع على الإعدادات المستندة إلى التنسيق.
تُدعم الخصائص التالية لـ FTP ضمن storeSettings
الإعدادات في مصدر النسخ المستند إلى تنسيق:
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية النوع ضمن storeSettings إلى FtpReadSettings. |
نعم |
حدد موقع الملفات المراد نسخها: | ||
الخيار 1: مسار ثابت |
نسخ من مسار المجلد/الملف المحدد في مجموعة البيانات. إذا كنت تريد نسخ كافة الملفات من مجلد، بالإضافة إلى ذلك حدد wildcardFileName على أنه * . |
|
الخيار 2: حرف بدل - wildcardFolderPath |
مسار المجلد مع أحرف البدل لتصفية مجلدات المصدر. حروف البدل المسموح بها هي: * (يطابق صفراً أو المزيد من الأحرف)، و? (يطابق صفراً أو حرفاً واحداً)؛ يمكنك استخدام ^ للإلغاء إذا كان اسم المجلد الفعلي يتضمن حرف بدل أو حرف إلغاء بداخله. راجع المزيد من الأمثلة في أمثلة على تصفية الملفات والمجلدات. |
لا |
الخيار 2: حرف بدل - wildcardFileName |
اسم الملف مع حروف البدل ضمن المجلد المحدد / folderPath/wildcardFolderPath المحدد لتصفية الملفات المصدر. حروف البدل المسموح بها هي: * (يطابق صفراً أو المزيد من الأحرف)، و? (يطابق صفراً أو حرفاً واحداً)؛ يمكنك استخدام ^ للإلغاء إذا كان اسم الملف الفعلي يتضمن حرف بدل أو حرف إلغاء بداخله. راجع المزيد من الأمثلة في أمثلة على تصفية الملفات والمجلدات. |
نعم |
الخيار 3: قائمة الملفات - fileListPath |
يشير إلى نسخ مجموعة ملفات معينة. أشر إلى ملف نصي يتضمن قائمة بالملفات التي تريد نسخها، ملف واحد لكل سطر، وهو المسار النسبي للمسار الذي تم تكوينه في مجموعة البيانات. عند استخدام هذا الخيار، لا تحدد اسم الملف في مجموعة البيانات. شاهد المزيد من الأمثلة في أمثلة قائمة الملفات. |
لا |
إعدادات إضافية: | ||
التكرار | يشير إلى ما إذا كانت البيانات ستتم قراءتها بشكل متكرر من المجلدات الفرعية أو من المجلد المحدد فقط. تجدر الإشارة إلى أنه عند ضبط recursive على true ويكون المتلقي مخزناً يستند إلى ملف، لا يتم نسخ أو إنشاء مجلد فارغ أو مجلد فرعي عند المتلقي. القيم المسموح بها هي true (افتراضية) وfalse. لا تنطبق هذه الخاصية عند تكوين fileListPath . |
لا |
deleteFilesAfterCompletion | يشير إلى ما إذا كان سيتم حذف الملفات الثنائية من مخزن المصدر بعد الانتقال بنجاح إلى مخزن الوجهة. يتم حذف الملف لكل ملف، لذلك عند فشل نشاط النسخ، سترى أن بعض الملفات قد تم نسخها بالفعل إلى الوجهة وحذفها من المصدر، بينما لا يزال البعض الآخر في المخزن المصدر. هذه الخاصية صالحة فقط في سيناريو نسخ الملفات الثنائية. القيمة الافتراضية: false. |
لا |
useBinaryTransfer | حدد ما إذا كنت تريد استخدام وضع النقل الثنائي. القيم صحيحة لوضع ثنائي (افتراضي) وخطأ لـ ASCII. | لا |
enablePartitionDiscovery | بالنسبة للملفات المقسمة، حدد ما إذا كنت تريد تحليل الأقسام من مسار الملف وإضافتها كأعمدة مصدر إضافية. القيم المسموح بها هي false (افتراضية) وtrue. |
لا |
partitionRootPath | عند تمكين اكتشاف القسم، حدد مسار الجذر المطلق لقراءة المجلدات المقسمة كأعمدة بيانات. إذا لم يتم تحديده، بشكل افتراضي، - عند استخدام مسار الملف في مجموعة البيانات أو قائمة الملفات على المصدر، يكون مسار جذر القسم هو المسار الذي تم تكوينه في مجموعة البيانات. - عند استخدام عامل تصفية مجلد أحرف البدل، يكون مسار جذر القسم هو المسار الفرعي قبل أول حرف بدل. على سبيل المثال، بافتراض أنك قمت بتكوين المسار في مجموعة البيانات كـ "root/folder/year=2020/month=08/day=27": - إذا حددت المسار الجذري للقسم كـ "root/folder/year=2020"، فإن نشاط النسخ سينتج عمودين آخرين month وday وقيمة "08" و"27" على التوالي، بالإضافة إلى الأعمدة داخل الملفات.- إذا لم يتم تحديد مسار جذر القسم، فلن يتم إنشاء أي عمود إضافي. |
لا |
maxConcurrentConnections | الحد الأعلى للاتصالات المتزامنة التي تم إنشاؤها إلى مخزن البيانات أثناء تشغيل النشاط. حدد قيمة فقط عندما تريد تحديد الاتصالات المتزامنة. | لا |
disableChunking | عند نسخ البيانات من FTP، تحاول الخدمة الحصول على طول الملف أولاً، ثم تقسيم الملف إلى أجزاء متعددة وقراءتها بالتوازي. حدد ما إذا كان خادم FTP يدعم الحصول على طول الملف أو السعي للقراءة من إزاحة معينة. القيم المسموح بها هي false (الافتراضي)، true. |
لا |
مثال:
"activities":[
{
"name": "CopyFromFTP",
"type": "Copy",
"inputs": [
{
"referenceName": "<Delimited text input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "DelimitedTextSource",
"formatSettings":{
"type": "DelimitedTextReadSettings",
"skipLineCount": 10
},
"storeSettings":{
"type": "FtpReadSettings",
"recursive": true,
"wildcardFolderPath": "myfolder*A",
"wildcardFileName": "*.csv",
"disableChunking": false
}
},
"sink": {
"type": "<sink type>"
}
}
}
]
أمثلة على تصفية الملفات والمجلدات
يصف هذا المقطع السلوك الناتج عن مسار المجلد واسم الملف مع عوامل تصفية البدل.
folderPath | fileName | التكرار | بنية المجلد المصدر ونتيجة التصفية (يتم استرداد الملفات بخط عريض) |
---|---|---|---|
Folder* |
(فارغ، استخدم الإعداد الافتراضي) | true | مجلد أ File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
Folder* |
(فارغ، استخدم الإعداد الافتراضي) | صحيح | مجلد أ File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
Folder* |
*.csv |
true | مجلد أ File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
Folder* |
*.csv |
صحيح | مجلد أ File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
أمثلة على قائمة الملفات
يصف هذا القسم السلوك الناتج عن استخدام مسار قائمة الملفات في نسخ مصدر النشاط.
بافتراض أن لديك بنية المجلد المصدر التالية وتريد نسخ الملفات بخط عريض:
نموذج بنية المصدر | Content in FileListToCopy.txt | التكوين |
---|---|---|
جذر مجلد أ File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv بيانات التعريف FileListToCopy.txt |
File1.csv Subfolder1/File3.csv Subfolder1/File5.csv |
في مجموعة البيانات: - مسار المجلد: root/FolderA في مصدر نشاط النسخ: - مسار ملف القائمة: root/Metadata/FileListToCopy.txt يشير مسار قائمة الملفات إلى ملف نصي في نفس مخزن البيانات يتضمن قائمة بالملفات التي ترغب في نسخها، ملف واحد لكل سطر، مع المسار النسبي للمسار الذي تم تكوينه في مجموعة البيانات. |
بحث عن خصائص النشاط
لمعرفة تفاصيل حول الخصائص، تحقق من نشاط البحث.
خصائص نشاط GetMetadata
لمعرفة تفاصيل حول الخصائص، يرجى التحقق من نشاط GetMetadata
حذف خصائص النشاط
لمعرفة تفاصيل حول الخصائص، يرجى التحقق من نشاط الحذف
النماذج القديمة
إشعار
لا تزال النماذج التالية مدعومة كما هي للتوافق مع الإصدارات السابقة. نقترح عليك استخدام النموذج الجديد المذكور في الأقسام أعلاه للمضي قدماً، وقد تحولت واجهة مستخدم التأليف إلى إنشاء النموذج الجديد.
نموذج مجموعة البيانات القديم
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية نوع مجموعة البيانات إلى: FileShare | نعم |
folderPath | المسار إلى المجلد. حروف البدل مدعومة، حروف البدل المسموح بها هي: * (يطابق صفراً أو المزيد من الأحرف)، و? (يطابق صفراً أو حرفاً واحداً)؛ يمكنك استخدام ^ للإلغاء إذا كان اسم المجلد الفعلي يتضمن حرف بدل أو حرف إلغاء بداخله. أمثلة: rootfolder/subfolder/، راجع المزيد من الأمثلة في أمثلة على تصفية الملف والمجلد. |
نعم |
fileName | اسم أو عامل تصفية حرف البدل للملف (الملفات) ضمن "folderPath" المحدد. إذا لم تحدد قيمة لهذه الخاصية، فإن مجموعة البيانات تشير إلى جميع الملفات الموجودة في المجلد. للتصفية، أحرف البدل المسموح بها هي * (تطابق صفراً أو المزيد من الحروف) و? (تطابق صفراً أو حرفاً واحداً).- مثال 1: "fileName": "*.csv" - مثال 2: "fileName": "???20180427.txt" استخدم ^ للإلغاء، إذا كان اسم الملف الفعلي يتضمن حرف بدل، أو إذا كان حرف الإلغاء هذا موجود بداخله. |
لا |
format | إذا كنت تريد نسخ الملفات كما هي بين المخازن المستندة إلى الملفات (نسخ ثنائي)، فتخطى قسم التنسيق في تعريفات الإدخال والإخراج في مجموعة البيانات على حدٍ سواء. إذا أردت توزيع الملفات بتنسيق معين، فإن أنواع تنسيق الملفات المدعومة هي ما يلي: TextFormat، وJsonFormat، وAvroFormat، وOrcFormat، وParquetFormat. عيّن خاصية النوع الموجودة ضمن التنسيق إلى إحدى هذه القيم. للحصول على مزيدٍ من المعلومات، انظر أقسام Text format، وJSON format، وAvro format، وORC format، وParquet format. |
لا (فقط لسيناريو النسخ الثنائي) |
ضغط | حدد نوع ضغط البيانات ومستواه. للحصول على مزيدٍ من المعلومات، راجع تنسيقات الملفات المدعومة وبرامج ضغط الوسائط وفكها. الأنواع المدعومة هي: GZip، وDeflate، وBZip2، وZipDeflate. المستويات المدعومة هي Optimal وFastest. |
لا |
useBinaryTransfer | حدد ما إذا كنت تريد استخدام وضع النقل الثنائي. القيم صحيحة لوضع ثنائي (افتراضي) وخطأ لـ ASCII. | لا |
تلميح
لنسخ جميع الملفات المضمنة في مجلد، حدد folderPath فقط.
لنسخ ملف واحد باسم معين، حدد folderPath مع جزء المجلد، وfileName مع اسم الملف.
لنسخ مجموعة فرعية من الملفات ضمن مجلد ما، حدد folderPath مع جزء المجلد، وfileName مع عامل تصفية حرف البدل.
إشعار
إذا كنت تستخدم خاصية "fileFilter" لتصفية الملفات، فإنه لا يزال مدعوماً كما هو، بينما نقترح عليك استخدام إمكانية التصفية الجديدة المضافة إلى "fileName" للمضي قدماً.
مثال:
{
"name": "FTPDataset",
"properties": {
"type": "FileShare",
"linkedServiceName":{
"referenceName": "<FTP linked service name>",
"type": "LinkedServiceReference"
},
"typeProperties": {
"folderPath": "folder/subfolder/",
"fileName": "myfile.csv.gz",
"format": {
"type": "TextFormat",
"columnDelimiter": ",",
"rowDelimiter": "\n"
},
"compression": {
"type": "GZip",
"level": "Optimal"
}
}
}
}
نموذج مصدر نشاط النسخ القديم
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية نوع مصدر نشاط النسخ إلى: FileSystemSource | نعم |
التكرار | تشير إلى ما إذا كان يتم قراءة البيانات بشكل متكرر من المجلدات الفرعية أو فقط من المجلد المحدد. ملاحظة: عند تعيين التكرار إلى صحيح ويكون المتلقي هو مخزن يستند إلى ملف، لن يتم إنشاء / نسخ مجلد فارغ /مجلد فرعي في المتلقي. القيم المسموح بها هي "true" (افتراضي) و"false" |
لا |
maxConcurrentConnections | الحد الأعلى للاتصالات المتزامنة التي تم إنشاؤها إلى مخزن البيانات أثناء تشغيل النشاط. حدد قيمة فقط عندما تريد تحديد الاتصالات المتزامنة. | لا |
مثال:
"activities":[
{
"name": "CopyFromFTP",
"type": "Copy",
"inputs": [
{
"referenceName": "<FTP input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "FileSystemSource",
"recursive": true
},
"sink": {
"type": "<sink type>"
}
}
}
]
المحتوى ذو الصلة
للحصول على قائمة بمخازن البيانات المدعومة من نشاط النسخ كمصادر ومواضع تلقي، راجع مخازن البيانات المدعومة.