পোস্টগ্রিসে একক এসকিউএল ফাইলে একাধিক এসকিএল ফাইল কল করুন


11

একক স্কেল ফাইলটিতে একাধিক এসকিএল ফাইলকে কীভাবে পোস্টগ্রিসে কল করবেন

উদাহরণস্বরূপ আমার কাছে aaa.sql, bbb.sql, ccc.sql আছে।

আমি এই 3 টি ফাইলকে এক্সএক্সএক্সএইচএলএল থেকে সম্পাদন করতে চাই।

কেউ আমাকে কীভাবে এটি করতে পরামর্শ দিতে পারে।

উত্তর:


12

আপনি যদি এই ফাইলগুলি চালনা করে থাকেন তবে আপনি নির্দেশটি psqlচান \i("ফাইল থেকে আদেশগুলি কার্যকর করুন")।

xxx.sql:

\i aaa.sql
\i bbb.sql
\i ccc.sql

আপনি যদি এগুলি অন্য কোনও প্রোগ্রামের মধ্য দিয়ে যাচ্ছেন তবে আপনাকে নিজেরাই ফাইলগুলি একত্রিত করতে হবে - আমি বিশ্বাস করি না বাহ্যিক ফাইলগুলি কার্যকর করার কোনও এসকিউএল-মানক উপায় আছে।


উত্তর দেওয়ার জন্য আপনাকে ধন্যবাদ। আমি এটি অর্জন করতে পেরেছি কিনা তা আমি পরীক্ষা করে নিশ্চিত করব এবং যাচ্ছি
ট্রিপ

এখনও কাজ করার মতো দেখাচ্ছে না আমি নিশ্চিত কিছু জানি না। আমার কি শেষে আধা কোলন দরকার ??? -আসলে তা না !!!
ট্রিপ

1
"কাজ না করা" এর চেয়ে আপনাকে আরও সুনির্দিষ্ট হওয়া দরকার - আমি আপনাকে আশ্বাস দিয়েছি এটি কাজ করে - পিএসএইচএল ম্যানুয়ালটি দেখুন
voretaq7

এটা কাজ করেছে. অবশেষে :-) থ্যাঙ্কু সমস্যা ছিল - এটি ফাইলটি সনাক্ত করতে সক্ষম হয় নি এবং ও ফাইলটির জন্য সম্পর্কিত পাথ নির্দিষ্ট করে দিয়েছে এবং এর কাজটি আবারও আপনাকে ধন্যবাদ
ট্রিপ

@ ট্রিপ ট্রিপ, তার উত্তরের জন্য ভোরেটাক ক্রেডিট দিতে ভুলবেন না!
রিচার্ড টি

4

আপনি যা চাইছেন তা ঠিক নয়, তবে আপনার উদ্দেশ্যটি পূরণ করবে: 1) আপনার সমস্ত স্ক্রিপ্ট ফাইল একটি ফোল্ডারে রাখুন; এবং 2) আপনার ফাইলগুলি পুনরাবৃত্তি করতে এবং পিএসএইচএল চালানোর জন্য একটি ব্যাশ স্ক্রিপ্ট ব্যবহার করুন। উদাহরণ স্বরূপ:

SCRIPTS_DIR=/home/myproject/scripts
DATABASE_NAME=database_name

for file in $SCRIPTS_DIR/*.sql
    do sudo -u postgres psql $DATABASE_NAME -f $file
done

এটি আসলে কিছুটা ভাল কারণ আপনাকে নিজের ফাইলের নাম টাইপ করতে হবে না।


3

বাশ শেলের উপর আপনি এটি একটি সাধারণ দিয়েও করতে পারেন find -exec

find sql/ -name *.sql -exec psql -U user -f {} \;

যা আপনি ব্যবহার প্রয়োজন "*.sql"বদলে*.sql
Jeel শাহ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.