উত্তর:
পিএসকিএল এর সহায়তা থেকে ( \?
):
\ o [ফাইল] সমস্ত প্রশ্নের ফলাফল ফাইল বা | পাইপে প্রেরণ করুন
কমান্ডের ক্রমটি এর মতো দেখাবে:
[wist@scifres ~]$ psql db
Welcome to psql 8.3.6, the PostgreSQL interactive terminal
db=>\o out.txt
db=>\dt
db=>\q
\o
আবার এটি বন্ধ করে।
\?
ফাইল যায় না। :(
\o queries-output.txt
ফাইলের নাম queries-output.txt
এবং টাইপ করার জন্য পরবর্তী সমস্ত কমান্ড o / p পুনঃনির্দেশিত করে \o
( পিএসএইচএল প্রম্পটে আবার) এই পুনঃনির্দেশ আচরণকে ফিরিয়ে দেয়।
পিএসকিএল \o
কমান্ডটি ইতিমধ্যে jhwist বর্ণনা করেছেন।
একটি বিকল্প পদ্ধতির মাধ্যমে COPY TO
সার্ভারের কোনও ফাইলে সরাসরি লিখতে কমান্ডটি ব্যবহার করা হচ্ছে। এটির সুবিধাটি হ'ল এটি আপনার পছন্দসই একটি সহজে-পার্স ফরম্যাটে ফেলে দেওয়া হয়েছে - পিএসএইচএল এর ট্যাবুলেটেড বিন্যাসের চেয়ে। এটি ব্যবহার করে অন্য টেবিল / ডাটাবেসে আমদানি করা খুব সহজ COPY FROM
।
বিশেষ দ্রষ্টব্য! এটির জন্য সুপারভাইজার সুবিধাগুলি প্রয়োজন এবং এটি সার্ভারের কোনও ফাইলে লিখবে ।
উদাহরণ: COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';')
';' দিয়ে একটি সিএসভি ফাইল তৈরি করে; ক্ষেত্র বিভাজক হিসাবে।
সর্বদা হিসাবে, বিশদ জন্য ডকুমেন্টেশন দেখুন
\copy
যেটি পোস্টগ্রিস কমান্ডটি যে কোনও ব্যবহারকারীর জন্য কাজ করতে পারে। এটি \ dt এর জন্য কাজ করে কিনা তা জানেন না, তবে সাধারণ সিনট্যাক্সটি নীচের লিঙ্ক থেকে পোস্ট করা হয়েছে এসকিউএল অনুলিপি সিনট্যাক্স
\copy (select * from tempTable limit 100) to 'filenameinquotes' with header delimiter as ','
উপরেরটি সিএসভি ফাইল হিসাবে প্রদত্ত ফাইল নামটিতে নির্বাচিত ক্যোয়ারির আউটপুট সংরক্ষণ করবে
সম্পাদনা করুন:
আমার পিএসকিএল সার্ভারের জন্য নিম্নলিখিত কমান্ডটি এটি পুরানো সংস্করণ v8.5 .5
copy (select * from table1) to 'full_path_filename' csv header;
আপনি যদি নিম্নলিখিত ত্রুটি পেয়ে থাকেন
ufgtoolspg=> COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';')
;
ERROR: must be superuser to COPY to or from a file
HINT: Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.
আপনি এটি এইভাবে চালাতে পারেন:
psql somepsqllink_or_credentials -c "COPY (SELECT foo, bar FROM baz) TO STDOUT (format csv, delimiter ';')" > baz.csv
সিএসভি ফাইলের ফলাফল সংরক্ষণের জন্য নীচে ক্যোয়ারী ব্যবহার করুন
file ফাইলের পথের সিএসভি শিরোনামে অনুলিপি করুন (আপনার ক্যোয়ারী);
উদাহরণ
purchase অনুলিপি (ক্রয়_অর্ডার থেকে নাম, তারিখ_অর্ডার নির্বাচন করুন) '/home/ankit/Desktop/result.csv' সিভিএস শিরোনামে;
আশা করি এটি আপনাকে সাহায্য করবে।
আমি ধরে নিচ্ছি যে এর জন্য কিছু অভ্যন্তরীণ পিএসকিএল কমান্ড রয়েছে তবে আপনি ব্যবহার -লিনাক্স-এনজি প্যাকেজ script
থেকে কমান্ডটি চালাতে পারেন :
বর্ণনার স্ক্রিপ্টটি আপনার টার্মিনালে মুদ্রিত প্রতিটি কিছুর টাইপস্ক্রিপ্ট তৈরি করে।
আসল কমান্ডে কোনও পরিবর্তন বা সামঞ্জস্যের প্রয়োজন ছাড়াই এই অ্যাপ্রোচটি সহজতম থেকে জটিল পর্যন্ত যে কোনও পিএসকিএল কমান্ডের সাথে কাজ করবে ।
দ্রষ্টব্য: লিনাক্স সার্ভারগুলির জন্য।
মডেল
read -r -d '' FILE_CONTENT << 'HEREDOC'
[COMMAND_CONTENT]
HEREDOC
echo -n "$FILE_CONTENT" > sqlcmd
EXAMPLE টি
read -r -d '' FILE_CONTENT << 'HEREDOC'
DO $f$
declare
curid INT := 0;
vdata BYTEA;
badid VARCHAR;
loc VARCHAR;
begin
FOR badid IN SELECT some_field FROM public.some_base LOOP
begin
select 'ctid - '||ctid||'pagenumber - '||(ctid::text::point) [0]::bigint
into loc
from public.some_base where some_field = badid;
SELECT file||' '
INTO vdata
FROM public.some_base where some_field = badid;
exception
when others then
raise notice 'Block/PageNumber - % ',loc;
raise notice 'Corrupted id - % ', badid;
--return;
end;
end loop;
end;
$f$;
HEREDOC
echo -n "$FILE_CONTENT" > sqlcmd
মডেল
sudo -u postgres psql [some_db] -c "$(cat sqlcmd)" >>sqlop 2>&1
EXAMPLE টি
sudo -u postgres psql some_db -c "$(cat sqlcmd)" >>sqlop 2>&1
cat sqlop
সম্পন্ন! ধন্যবাদ! = D:
ডকারের জন্য পন্থা
পিএসকিএল কমান্ডের মাধ্যমে
docker exec -i %containerid% psql -U %user% -c '\dt' > tables.txt
অথবা এসকিউএল ফাইল থেকে কোয়েরি
docker exec -i %containerid% psql -U %user% < file.sql > data.txt