ওরাকল এসকিউএল স্ক্রিপ্টটি চালান এবং কমান্ড প্রম্পটের মাধ্যমে sqlplus.exe থেকে প্রস্থান করুন


114

আমি উইন্ডোজ কমান্ড প্রম্পটের মাধ্যমে এসকিউএল প্লাসের মাধ্যমে একটি ওরাকল স্ক্রিপ্টটি চালাতে চাই। স্ক্রিপ্টটিতে একটি "প্রস্থান" কমান্ড নেই, তবে আমি এসকিউএল প্লাসটি প্রস্থান করার জন্য চাই, স্ক্রিপ্টটি সমাপ্ত হওয়ার পরে কমান্ড প্রম্পটে নিয়ন্ত্রণ ফিরিয়ে আনব। আমার লক্ষ্য হ'ল স্ক্রিপ্টটি পরিবর্তন না করে এটি করা । এটা কি সম্ভব?


আপনি কি এটি "স্ক্লাল্প্লাস .... <স্ক্রিপ্টনাম" বা "স্ক্লিপ্লাস ... @ স্ক্রিপ্টনাম" দিয়ে সম্পাদন করছেন? আপনি ইউনিক্সে কোনটি করেন তার উপর নির্ভর করে আমি বিভিন্ন আচরণ খুঁজে পাই।
রানরিগ

উত্তর:


140

আর একটি উপায় ব্যাচ ফাইলে এই কমান্ডটি ব্যবহার করা:

echo exit | sqlplus user/pass@connect @scriptname

1
কুল! আপনি কি জানেন কীভাবে "প্রস্থান" স্ক্যালপ্লাস অধিবেশনে যুক্ত হয়?

6
স্ক্যালপ্লাস কমান্ড স্ক্রিপ্টটি চালায় তারপরে স্ট্যান্ডার্ড ইনপুট থেকে আরও কমান্ড পড়ার চেষ্টা করে। এই পাইপলাইনের সাহায্যে স্ট্যান্ডার্ড ইনপুট থেকে পঠনটি ইকো কমান্ড থেকে "প্রস্থান" স্ট্রিংটি পড়বে, যার ফলে স্কলপ্লাসটি প্রস্থান করবে।
ডেভ কোস্টা

দুর্দান্ত - আমি ঠিক এটিই খুঁজছিলাম। ধন্যবাদ!
জোশএল

4
সাবধান হন যে আপনি ইউনিক্স (পিএস-বিফ) এর প্রক্রিয়া তালিকার মাধ্যমে আপনার ব্যবহারকারীর পাসওয়ার্ডটি উন্মোচিত করেছেন তবে আমি প্রায় নিশ্চিত যে এটি উইন্ডোজে একইভাবে কাজ করে
রবার্ট মেরকওয়ার্ডিজেলিবে

3
stackoverflow.com/questions/1639704/... এবং dba.stackexchange.com/a/65064/16892 কিছু উপায় বর্ণনা কমান্ড লাইন পাসওয়ার্ড ব্যবহার করতে না ...
rogerdpack

13

আমি এটি সেরা সমাধান হিসাবে পেয়েছি এবং এটি টার্মিনালে বা স্ক্রিপ্টের মধ্যে কাজ করে:

echo @scriptname | sqlplus username/password@connect

1
যদিও এটি প্রযুক্তিগতভাবে প্রশ্নের উত্তর দিতে পারে, এটি অন্যান্য উত্তরগুলির সদৃশ এবং এটির খুব কম মান যুক্ত হয়। এছাড়াও, এই আদেশগুলি কী করছে তা যদি আপনি ব্যাখ্যা করেন তবে এটি অন্যদের সহায়তা করবে। ধন্যবাদ!
ক্রিস এস

5
এটি আমার পক্ষে কাজ করেছে এবং আমি এটি শীর্ষ উত্তরের চেয়ে আরও মার্জিত বলে মনে করি কারণ এটি 'প্রস্থান' এড়ায়।
বোগদান Calmac

12

আপনার সমস্যাটি স্কেল ফাইলের সাথেই হতে পারে তা বুঝতে পেরে বুঝতে পারুন যে স্ক্যালপ্লাসটি প্রস্থান করার জন্য বলা দরকার। আমি এটি করার উপায়টি হ'ল:

দ্বৈত থেকে * নির্বাচন করুন;

প্রস্থান;
/

(স্ল্যাশ গুরুত্বপূর্ণ It এটি স্কেলপ্লাসকে তার উপরে স্টেটমেট (গুলি) চালানোর জন্য বলে)


নোট করুন যে ডেভ কোস্তার উত্তরটিও কার্যকর: স্কাইপ্লাস কমান্ডে পাইপিং প্রস্থান (বা প্রস্থান)।

কৌশল / কৌশলটির জন্য ধন্যবাদ, আমি এই তথ্যটি খুঁজছিলাম!

2
স্ল্যাশ এর অর্থ এসকিউএল বাফারে যা আছে তা কার্যকর করা। এটি একাধিক বিবৃতি কার্যকর করে না, এবং "প্রস্থান" এর মতো এসকিউএলপ্লাস নিয়ন্ত্রণ আদেশগুলি কার্যকর করা প্রয়োজন হয় না। যদি আপনি ইন্টারেক্টিভ এসকিউএলপ্লাস প্রম্পটে "প্রস্থান" <প্রবেশ করুন "টাইপ করেন তবে তা অবিলম্বে প্রস্থান করবে।
ডেভ কস্তা

12

ব্যবহারকারীর তথ্য এবং প্রস্থান লুকানোর সর্বোত্তম উপায় হ'ল:

exit | sqlplus -S user/pwd@server @script.sql

exitস্ক্যালপ্লাসের আউটপুট সরবরাহ করা হয় এটি ছেড়ে দিতে বাধ্য করে। -Sস্ক্রিপ্টে সমস্ত সার্ভার আউটপুট অন্য তারপর এসকিএল কোয়েরি সাপ্রেস করে।


2
Ssh ব্যবহার করা হলে প্রস্থান করা | পরিবর্তে প্রস্থান | যাতে ফাইলটি সম্পাদনা করা হয় যদি পরে এটি প্রস্থান করতে বা প্রস্থান করতে হয় তবে এটি আপনার ssh সেশনটি বন্ধ করবে না। ফাইলটি খুব বেশি পাওয়া না গেলে এটি কাজ করে।
কার্ল হেন্সলিন

6

আপনি নিজের শেল স্ক্রিপ্টে এটিও করতে পারেন।

sqlplus /nolog <<EOF
connect user/pass
@run_some_file.sql
select * from dual;
EOF

আপনার ""; "এড়াতে হতে পারে সঙ্গে একটি \.


3

হ্যাঁ, এটি সম্ভব - একটি মোড়ক স্ক্রিপ্ট তৈরি করুন যা এসকিউএলপ্লাস যথাযথভাবে সেট আপ করে, এতে আপনার স্ক্রিপ্ট (যেমন। @YourTargetScript.sql) অন্তর্ভুক্ত থাকে এবং তারপরে একটি প্রস্থান হয়।

এটি বলেছিল, আমি এই পদ্ধতির মোটেও সুপারিশ করি না - এসকিউএলপ্লাসের প্রোগ্রামেটিক ব্যবহারের জন্য অনেকগুলি দুর্দান্ত গ্যাচ রয়েছে; অতীতে ওরাকলকে শেল স্ক্রিপ্টগুলি লেখার সময়, আমি এর চারপাশে একটি পাইথন মোড়ক তৈরি করেছি (আরও যুক্তিসঙ্গত ত্রুটি-পরিচালনা আচরণ, stdout / stderr, নেটিভ সিএসভি আউটপুট সমর্থন, এবং এই জাতীয় অন্যান্য গুডির মধ্যে আউটপুট বুদ্ধিমান বিচ্ছেদ) যুক্ত করেছিলাম এবং এটি কাজ করেছিল অনেক ভাল.


অন্য কোনও প্রোগ্রামের সাথে আমি আপনার সাথে একমত হব। তবে আমি দেখতে পেলাম যে এসকিউএলপ্লাস আমাকে একটি খারাপ প্রশ্নের জন্য দরকারী প্রসঙ্গ দিয়েছে যা অন্য পরিবেশগুলি (আমার ক্ষেত্রে পার্ল / ডিবিআই / ডিবিডি :: ওরাকল) করেনি। আপনি যদি যত্ন সহকারে ত্রুটি পরিচালনা করছেন, তবে এটি ব্যথার পক্ষে উপযুক্ত।

এছাড়াও, সার্ভারের উপর আপনার কতটুকু নিয়ন্ত্রণ রয়েছে তার উপর নির্ভর করে আপনি শেল এবং এসকিউএলপ্লাসের চেয়ে আরও বেশি কিছু উপলভ্য করতে পারবেন বা নাও করতে পারেন। সোলারিস, এইচপি / ইউএক্স, এআইএক্স এবং এর মতো চলমান প্রচুর স্টোজিয়ার ইউনিক্সের দোকানগুলি খুব খালি ইনস্টল ব্যবহার করে এবং আপনাকে বাক্সে আর কিছু ইনস্টল করতে দিবে না। মনে রাখবেন যে কখনও কখনও এটির কাজটি কেবল আপনার অ্যাপ্লিকেশনটির সাথে একটি সংক্ষিপ্ত ইন্টারপ্রেটারকে বান্ডিল করা হয়।
কনসার্নড

3

এটার মত:

sqlplus / nolog userid / password @ tnsname @filename

আপনি যদি এটি একটি ব্যাচের ফাইলে রাখেন, তবে বিবৃতি (গুলি) অনুসরণ করে এটি নিয়ন্ত্রণ অবিরত থাকবে।

সম্পাদনা: আমার খারাপ, / এনোলগ পতাকা দিয়ে আবার চেষ্টা করুন


দুর্ভাগ্যক্রমে, এটি কাজ করে না। আমি যখন ব্যাচ ফাইলটি সম্পাদন করি, তখন এসকিউএলপ্লাস কমান্ড প্রম্পটে নিয়ন্ত্রণ ফেরানোর পরিবর্তে ব্যবহারকারী ইনপুটটির জন্য এসকিউএল> প্রম্পটে অপেক্ষা করে।
JoshL

দুঃখিত, এটি কাজ করে না। / এনলগ স্কলপ্লাসকে লগইন না করে শুরু করার অনুমতি দেয়। এটি সম্পূর্ণ হওয়ার সাথে সাথে কোনও স্ক্রিপ্ট থেকে বেরিয়ে আসার সাথে কিছুই করার নেই।
জোশএল

হুম, আমি পরিবেশের পার্থক্যগুলি সম্পর্কে অবাক হতে শুরু করি। আমার কাছে এমন অনেক ব্যাট স্ক্রিপ্ট রয়েছে যা স্ক্যালপ্লাসটি এভাবে ব্যবহার করে।

ক্রিস, আপনি একটি কাজের উদাহরণ প্রদান করতে পারেন? কেবলমাত্র এমন কিছু সাধারণ যা "ডুয়াল থেকে" নির্বাচন করুন "বা কিছু চালায় ... আমি আপনার পরামর্শগুলি চেষ্টা করার জন্য উদাহরণ তৈরি করেছি, কোনও লাভ হয়নি। মনে রাখবেন এটি উইন্ডোতে রয়েছে।
JoshL

জোশ, নীচে নতুন উত্তর দেখুন।

1

স্ক্রিপ্টে আপনার পাসওয়ার্ড অন্তর্ভুক্ত করার সুরক্ষা সম্পর্কে উদ্বিগ্নদের জন্য, এসক্টমের "বাহ্যিকভাবে চিহ্নিত" http: //asktom.oracle.com/pls/apex/f? P = 100: 11: 0 :::: সম্পর্কে একটি নিবন্ধ রয়েছে P11_QUESTION_ID: 142212348066


2
যতক্ষণ এই তাত্ত্বিক প্রশ্নের উত্তর হতে পারে, এটা বাঞ্ছনীয় হবে উত্তর অপরিহার্য অংশের এখানে অন্তর্ভুক্ত করা, এবং রেফারেন্স এর জন্য লিঙ্ক প্রদান।
স্কট প্যাক

0

আপনার এসকিউএল স্ক্রিপ্টে প্রস্থান করুন। এখানে আমার টেস্ট.বাট ফাইলের উদাহরণ রয়েছে:

sqlplus ব্যবহারকারী / pwd @ সার্ভার @ টেস্ট.এসকিউএল> myLOG.LOG G

আমার টেস্ট.এসকিউএল ফাইলটিতে নিম্নলিখিত রয়েছে: দ্বৈত থেকে * নির্বাচন করুন; প্রস্থান


এটি ঠিক আছে, তবে প্রস্থান / প্রস্থান বিবৃতি অন্তর্ভুক্ত করার জন্য স্ক্রিপ্টটি পরিবর্তন না করে এটি করার প্রয়োজনীয়তা পূরণ করে না। উদ্দেশ্য হ'ল এই স্ক্রিপ্টগুলি এসকিউএল প্লাস থেকে ডিবিএ দ্বারা চালিত হতে পারে তবে এটি একটি ব্যাচ ফাইল থেকেও চালানো যেতে পারে।
জোশএল

0

প্রস্থান | এসকিউএলপিএলএস / @ @

এটি সঠিক সমাধান, আমি এটি কাজ করার চেষ্টা করেছি

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