شروحات الكمبيوتر والإنترنت والموبايل

أتمتة استيراد ملفات CSV متعددة إلى PostgreSQL باستخدام بايثون

تعد عملية استيراد كميات كبيرة من الملفات بتنسيق CSV إلى قاعدة بيانات PostgreSQL من المهام الشائعة التي يواجهها العديد من المحترفين في مجال البيانات. حيث تتطلب هذه العملية إدارة بيانات متعددة تتنوع في تنسيقاتها وأعمدتها، مما يجعل تنفيذها مهمة صعبة بعض الشيء. في هذا المقال، سنتناول كيفية أتمتة استيراد مئات ملفات CSV ذات التنسيقات والأعمدة المختلفة إلى جدول في PostgreSQL من خلال كتابة سكريبت بلغة Python.

فهم المشكلة

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

الخطوات الأساسية لكتابة السكريبت

للبدء في أتمتة عملية استيراد البيانات، تحتاج أولاً إلى إعداد البيئة عن طريق تثبيت المكتبات الضرورية. من بين المكتبات الأكثر شيوعًا هي pandas وSQLAlchemy، التي تسهل قراءة الملفات وكتابة البيانات إلى قاعدة البيانات.

pip install pandas sqlalchemy psycopg2

استيراد البيانات المالية

لنبدأ بمجموعة البيانات الأولى التي تحتوي على الملفات المالية. بمجرد قراءة جميع الملفات في المجلد، يمكننا دمجها في إطار بيانات واحد باستخدام pandas:

import pandas as pd
import os
directory_path = 'path/to/financial_data'
combined_df = pd.DataFrame()
for filename in os.listdir(directory_path):
    if filename.endswith('.csv'):
        file_path = os.path.join(directory_path, filename)
        df = pd.read_csv(file_path)
        combined_df = pd.concat([combined_df, df], ignore_index=True)
# الآن يمكننا استيراد combined_df إلى PostgreSQL

بعد أن تم دمج البيانات، يمكنك استخدام SQLAlchemy لإرسال البيانات إلى قاعدة البيانات:

from sqlalchemy import create_engine
engine = create_engine('postgresql://username:password@localhost:5432/mydatabase')
combined_df.to_sql('financial_metrics', engine, if_exists='replace', index=False)

استيراد بيانات سوق الأوراق المالية

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

# قراءة ملف الأعمدة
columns_df = pd.read_csv('path/to/stock_market_columns.csv')
columns = list(columns_df.columns)
# هنا نقوم بإنشاء الجدول مع الأعمدة المطلوبة
engine.execute('CREATE TABLE stock_market_data ({})'.format(', '.join([f"{col} TEXT" for col in columns])))
# الآن نستطيع استيراد البيانات
stock_data_directory = 'path/to/stock_market_data'
for filename in os.listdir(stock_data_directory):
    if filename.endswith('.csv'):
        file_path = os.path.join(stock_data_directory, filename)
        df = pd.read_csv(file_path)
        df.columns = [col if col in columns else None for col in df.columns]
        df.to_sql('stock_market_data', engine, if_exists='append', index=False)

خاتمة

من خلال الخطوات المذكورة، يمكنك Automate bulk importing hundreds of csv files with differing formats/columns into a table in PostgreSQL by writing a script in Python بسهولة. يستفيد هذا الحل من مرونة Python و pandas للتعامل مع بيانات متعددة وتنسيقاتها المختلفة بكفاءة. هذه التقنية ليست فقط موفرة للوقت، بل تسهم أيضًا في الحفاظ على دقة البيانات. إذا كنت بحاجة لأي مساعدة إضافية، فلا تتردد في البحث عن مصادر أخرى أو طلب المساعدة من المجتمعات المتخصصة.

فهد السلال

خبير تقني متخصص في شروحات الكمبيوتر والإنترنت والموبايل، يتمتع بخبرة واسعة في تقديم حلول تقنية مبتكرة ومبسطة. يهدف فهد إلى مساعدة المستخدمين على تحسين تجربتهم التقنية من خلال مقالات وأدلة عملية واضحة وسهلة الفهم.
زر الذهاب إلى الأعلى
Don`t copy text!