SQL: تحويل ملف النسخ الاحتياطي من تنسيق النسخ لإدراج تنسيق

StackOverflow https://stackoverflow.com/questions/2827072

  •  26-09-2019
  •  | 
  •  

سؤال

لدي نسخة احتياطية من PostgreSQL مصنوعة من phppgadmin باستخدام COMPORT> COPY (بدلاً من ذلك copy> sql وهو ما أحتاجه بالفعل).

يحتوي الملف على إدخالات مثل هذا:

COPY tablename(id, field) FROM stdin;
...

كيفية تحويل هذا الملف إلى تنسيق SQL؟

INSERT INTO tablename...

أرغب في استخدام pgadmin لاستيراد هذا الملف باستخدام أمر تنفيذ SQL.

هل كانت مفيدة؟

المحلول

لا يمكنك تحويل ذلك إلى تنسيق SQL (على الأقل ليس مباشرة).

إذا لم تتمكن من إعادة التصدير ، فإن الخيار الأكثر بساطة هو الالتفاف phppgadmin، قم بتسجيل الدخول في الخادم الخاص بك وقم بتشغيل شيء مثل

cat [yourdump.sql]  | psql [your connections args]

إذا لم يكن لديك وصول Shell إلى الخادم الخاص بك ، فقد تحاول تحميل الملف (عبر SFTP أو FTP) وتحميله "COPY <table> FROM <path_to_file_on_server>". ولكن إذا كان هناك العديد من الجداول ، فيجب عليك (على ما أظن) تقسيم الملف والقيام بذلك في وقت واحد.

http://phppgadmin.sourceforge.net/؟page=faq

نصائح أخرى

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

ولكن باستخدام أداة سطر الأوامر "PG_DUMP" ، يمكنك إنشاء ملف تفريغ DB مع "إدراج" بدلاً من عبارات "Copy". الاستخدام البسيط "وسيطة" inserts "(قد تكون"-inserts "على ما يرام بالنسبة لك).

تعديل:

ما يمكنك فعله هو:

  1. قم بإنشاء قاعدة بيانات postgres جديدة على جهازك المحلي
  2. استيراد ملف تفريغ DB الخاص بك في قاعدة البيانات الجديدة التي تم إنشاؤها

    psql -U <dbuser> <database> < dump.sql
    
  3. وقم بإنشاء تفريغ بعد أن "-العمود" من قاعدة البيانات هذه

    pg_dump --column-inserts -U <dbuser> <database> > dumpWithInserts.sql
    

يمكنك المحاولة نسخ من البرنامج بناء الجملة ، متاح منذ postgresql 9.3

علي سبيل المثال:COPY tbl_customers (id, address_id, insurance_id, fullname, secret_code ...) FROM PROGRAM 'echo "1 2 \N Ivan Ivanov 42 ..."'

لقد كتبت أداة لتحويل نسخ من تفريغ لإدراج تفريغ:

https://github.com/freddez/pg-pump2insert

يمكنك استخدامه لتحميل تفريغ في قاعدة بيانات أخرى أو البحث عن قيم محذوفة محددة على سبيل المثال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top