পোস্টগ্রিএসএসকিউএল স্কিমার জন্য আমি কীভাবে সমস্ত টেবিল সিএসভিতে ফেলে দিতে পারি?


11

আমার এতে প্রচুর স্কিমার সাথে একটি ডাটাবেস রয়েছে এবং আমি টেবিলের প্রতিটি বিষয়বস্তু সিএসভিতে ফেলে দিতে চাই। আমি কপি কমান্ড সম্পর্কে সচেতন তবে আমি কীভাবে এমন কোনও স্ক্রিপ্ট করবেন তা নিশ্চিত নই যা স্কিমে সমস্ত সারণী পড়বে এবং তাদের বিরুদ্ধে কপি চালাবে।

উত্তর:


18

এখানে একটি শেল স্ক্রিপ্ট যা আপনি যা করতে পারেন তা করতে পারেন:

SCHEMA="myschema"
DB="mydb"

psql -Atc "select tablename from pg_tables where schemaname='$SCHEMA'" $DB |\
  while read TBL; do
    psql -c "COPY $SCHEMA.$TBL TO STDOUT WITH CSV" $DB > $TBL.csv
  done

আপনার নির্দিষ্ট ডাটাবেস এবং স্কিমাতে আপনি ডিবি এবং এসসিএইচএমএ ভেরিয়েবলগুলি সেট করেছেন তা নিশ্চিত করুন।

মোড়ানোর জন্য পিএসকিএল কমান্ডটি ক এবং কমান্ডের কাছে স্ট্রিং থেকে পাঠানো সারণীর তালিকা তৈরি করতে A এবং t পতাকা ব্যবহার করে uses


3

আপনার যদি সমস্ত স্কিমা রফতানি করতে হয় তবে এখানে স্ক্রিপ্ট

PGDATABASE="db"
PGUSER="user"

psql -Atc "select schema_name from information_schema.schemata" |\
    while read SCHEMA; do
    if [[ "$SCHEMA" != "pg_catalog" && "$SCHEMA" != "information_schema" ]]; then
        psql -Atc "select tablename from pg_tables where schemaname='$SCHEMA'" |\
            while read TBL; do
                psql -c "COPY $SCHEMA.$TBL TO STDOUT WITH CSV DELIMITER ';' HEADER ENCODING 'UTF-8'" > $SCHEMA.$TBL.csv
            done
    fi
    done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.