كيفية تصدير بيانات PostgreSQL إلى Parquet أو CSV أو JSON
هذا سهل باستخدام clickhouse-local:
- استخدم دالة الجدول
postgresqlلقراءة البيانات - استخدم عبارة
INTO OUTFILE _filename_ FORMATوحدد تنسيق الإخراج المطلوب
يمكن أن يكون تنسيق الإخراج أيًا من تنسيقات الإخراج المدعومة في ClickHouse. لنلقِ نظرة على بعض الأمثلة…
تستخدم هذه الأمثلة clickhouse-local، وهو جزء من الملف التنفيذي لـ ClickHouse. نزّله باستخدام ما يلي:
curl https://clickhouse.com/ | shتصدير PostgreSQL إلى Parquet
تتيح دالة الجدول postgresql تنفيذ استعلامات SELECT (وINSERT) على البيانات المخزنة على خادم PostgreSQL بعيد. على سبيل المثال، لعرض كامل محتويات جدول في PostgreSQL:
SELECT *
FROM
postgresql(
'localhost:5432',
'postgres_database',
'postgres_table',
'user',
'password'
);يمكننا توجيه ناتج هذا الاستعلام إلى ملف باستخدام INTO OUTFILE. استخدم FORMAT لتحديد تنسيق الملف المراد إنشاؤه. لنأخذ المحتوى الكامل لجدول PostgreSQL، ثم نرسل محتواه إلى ملف Parquet:
./clickhouse local -q "SELECT * FROM
postgresql(
'localhost:5432',
'postgres_database',
'postgres_table',
'user',
'password'
)
INTO OUTFILE 'my_output_file.parquet'"تصدير PostgreSQL إلى CSV
الأمر مماثل لما هو عليه مع Parquet، باستثناء أننا نحدّد اسم ملف أنسب للمخرجات:
./clickhouse local -q "SELECT * FROM
postgresql(
'localhost:5432',
'postgres_database',
'postgres_table',
'user',
'password'
)
INTO OUTFILE 'my_output_file.csv'"هذا كل ما في الأمر! يتعرّف ClickHouse على الامتداد .csv في اسم ملف الإخراج، فيُخرج البيانات بصيغة القيم المفصولة بفواصل. وفيما عدا ذلك، فهو الأمر نفسه تمامًا كما في الأعلى.
تصدير PostgreSQL إلى JSON
للتحويل من PostgreSQL إلى JSON، ما علينا سوى تغيير اسم الملف، وسيتعرّف ClickHouse على التنسيق تلقائيًا:
./clickhouse local -q "SELECT * FROM
postgresql(
'localhost:5432',
'postgres_database',
'postgres_table',
'user',
'password'
)
INTO OUTFILE 'my_output_file.ndjson'"تمرير PostgreSQL إلى عملية أخرى كتدفّق
بدلًا من استخدام INTO OUTFILE، يمكنك تمرير نتائج دالة الجدول إلى عملية أخرى كتدفّق. إليك مثالًا بسيطًا لتوضيح البنية - نحسب عدد الصفوف باستخدام أمر Linux wc -l:
./clickhouse local -q "SELECT *
FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/house_parquet/house_0.parquet'
FORMAT JSONEachRow
)" | wc -lومع ذلك، يمكننا بسهولة تمرير الصفوف بشكل متدفق إلى برنامج نصي لـ shell، أو برنامج نصي بلغة بايثون، أو أي عملية أخرى تريدها.