> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# كيفية إدخال ملفات Parquet من حاوية S3

> تعرّف على أساسيات استخدام محرك جدول S3 في ClickHouse لإدخال ملفات Parquet والاستعلام عنها من حاوية S3، بما في ذلك الإعداد وأذونات الوصول وأمثلة على استيراد البيانات.

{frontMatter.description}

<div id="ingesting-parquet-files-from-an-s3-bucket">
  ## إدخال ملفات Parquet من حاوية S3
</div>

فيما يلي بعض الأساسيات حول استخدام محرك جدول S3 لقراءة ملفات Parquet.

* أنشئ مفتاح الوصول والمفتاح السري لمستخدم خدمة IAM.
  فعادةً لا يصلح مستخدمو تسجيل الدخول العاديون، لأنهم قد يكونون مُهيّئين بسياسة MFA.

* اضبط الأذونات في السياسة بحيث تسمح لمستخدم الخدمة بالوصول إلى الحاوية والمجلدات.

فيما يلي مثال بسيط جدًا يمكنك استخدامه لاختبار آلية الوصول إلى ملفات Parquet بنجاح قبل تطبيق ذلك على بياناتك الفعلية.

إذا كنت بحاجة إلى مثال على إنشاء مستخدم وحاوية، فيمكنك اتباع القسمين الأولين (إنشاء مستخدم وإنشاء حاوية):
[دمج S3 مع ClickHouse](/docs/ar/integrations/connectors/data-ingestion/AWS/integrating-s3-with-clickhouse)

لقد استخدمت ملفًا نموذجيًا من هنا: [https://github.com/Teradata/kylo/tree/master/samples/sample-data/parquet](https://github.com/Teradata/kylo/tree/master/samples/sample-data/parquet)
ورفعته إلى حاوية الاختبار الخاصة بي

يمكنك ضبط السياسة على الحاوية بشكل مشابه لما يلي:
(عدّل حسب الحاجة، فهذا المثال يمنح امتيازات واسعة نسبيًا، لكنه سيساعد في الاختبار. ويمكنك تضييق الأذونات حسب الحاجة)

```
{
    "Version": "2012-10-17",
    "Id": "Policy123456",
    "Statement": [
        {
            "Sid": "abc123",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::1234567890:user/mars-s3-user"
                ]
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::mars-doc-test",
                "arn:aws:s3:::mars-doc-test/*"
            ]
        }
    ]
}
```

يمكنك تشغيل الاستعلامات بهذا النوع من الصياغة باستخدام محرك جدول S3:
[https://clickhouse.com/docs/sql-reference/table-functions/s3/](https://clickhouse.com/docs/sql-reference/table-functions/s3/)

```
clickhouse-cloud :)  select count(*) from s3('https://mars-doc-test.s3.amazonaws.com/s3-parquet-test/userdata1.parquet','ABC123', 'abc+123', 'Parquet', 'first_name String');

SELECT count(*)
FROM s3('https://mars-doc-test.s3.amazonaws.com/s3-parquet-test/userdata1.parquet', 'ABC123', 'abc+123', 'Parquet', 'first_name String')

Query id: fd4f1193-d604-4ac0-9a46-bdd2d5e14727

┌─count()─┐
│    1000 │
└─────────┘

1 row in set. Elapsed: 1.274 sec. Processed 1.00 thousand rows, 14.64 KB (784.81 rows/s., 11.49 KB/s.)
```

مرجع أنواع البيانات لتنسيق Parquet موجود هنا:
[https://clickhouse.com/docs/interfaces/formats/#data-format-parquet](https://clickhouse.com/docs/interfaces/formats/#data-format-parquet)

لاستيراد البيانات إلى جدول ClickHouse أصلي:

أنشئ الجدول على نحوٍ مماثل لما يلي (وقد اخترنا فقط بضعة أعمدة من ملف Parquet):

```
clickhouse-cloud :) CREATE TABLE my_parquet_table (id UInt64, first_name String) ENGINE = MergeTree ORDER BY id;

CREATE TABLE my_parquet_table
(
    `id` UInt64,
    `first_name` String
)
ENGINE = MergeTree
ORDER BY id

Query id: 412e3994-bf8e-444e-ac43-a7c82642b7da

Ok.

0 rows in set. Elapsed: 0.600 sec.
```

اختر البيانات من حاوية S3 لإدراجها في الجدول الجديد:

```
clickhouse-cloud :) INSERT INTO my_parquet_table (id, first_name) SELECT id, first_name FROM s3('https://mars-doc-test.s3.amazonaws.com/s3-parquet-test/userdata1.parquet', 'ABC123','abc+123', 'Parquet', 'id UInt64, first_name String') FORMAT Parquet

INSERT INTO my_parquet_table (id, first_name) SELECT
    id,
    first_name
FROM s3('https://mars-doc-test.s3.amazonaws.com/s3-parquet-test/userdata1.parquet', 'ABC123', 'abc+123', 'Parquet', 'id UInt64, first_name String')

Query id: c3cdc871-f338-462d-8797-6751b45a0b58

Ok.

0 rows in set. Elapsed: 1.220 sec. Processed 1.00 thousand rows, 22.64 KB (819.61 rows/s., 18.56 KB/s.)
```

تحقّق من عملية الاستيراد:

```
clickhouse-cloud :) SELECT * FROM my_parquet_table LIMIT 10;

SELECT *
FROM my_parquet_table
LIMIT 10

Query id: 1ccf59dd-d804-46a9-aadd-ed5c57b9e1a0

┌─id─┬─first_name─┐
│  1 │ Amanda     │
│  2 │ Albert     │
│  3 │ Evelyn     │
│  4 │ Denise     │
│  5 │ Carlos     │
│  6 │ Kathryn    │
│  7 │ Samuel     │
│  8 │ Harry      │
│  9 │ Jose       │
│ 10 │ Emily      │
└────┴────────────┘
```

عندما تصبح مستعدًا لاستيراد بياناتك الفعلية، يمكنك استخدام بعض الصياغات الخاصة مثل أحرف البدل والنطاقات لتحديد المجلدات والمجلدات الفرعية والملفات داخل الحاوية.
أنصحك بتطبيق filter على بضعة مجلدات وملفات لاختبار الاستيراد أولًا، مثل سنة معيّنة، أو شهرين، أو نطاق زمني محدد.

إلى جانب خيارات المسار هنا، أُضيفت حديثًا الصياغة `**`، وهي تحدد جميع المجلدات الفرعية بشكل تكراري.
[https://clickhouse.com/docs/sql-reference/table-functions/s3/](https://clickhouse.com/docs/sql-reference/table-functions/s3/)

على سبيل المثال، بافتراض أن المسارات وبنية الحاوية تبدو على النحو التالي:
`https://your_s3_bucket.s3.amazonaws.com/<your_folder>/<year>/<month>/<day>/<filename>.parquet`
`https://mars-doc-test.s3.amazonaws.com/system_logs/2022/11/01/my-app-logs-0001.parquet`

سيؤدي ذلك إلى جلب جميع الملفات الخاصة باليوم الأول من كل شهر خلال 2021-2022
`https://mars-doc-test.s3.amazonaws.com/system_logs/{2021-2022}/**/01/*.parquet`
