পোস্টগ্রিএসকিউএল 8.4 এ বিদ্যমান * .এসকিউএল ফাইলগুলি কীভাবে আমদানি করবেন?


105

আমি PostgreSQL 8.4 ব্যবহার করছি এবং একটি ডেটাবেসে আমদানি করার জন্য আমার কাছে কিছু * .এসকিউএল ফাইল রয়েছে। আমি কীভাবে এটি করতে পারি?

উত্তর:


142

কমান্ড লাইন থেকে:

psql -f 1.sql
psql -f 2.sql

psqlপ্রম্পট থেকে :

\i 1.sql
\i 2.sql

নোট করুন যে আপনার একটি নির্দিষ্ট ক্রমে ফাইলগুলি আমদানি করতে হতে পারে (উদাহরণস্বরূপ: ডেটা ম্যানিপুলেশনের আগে ডেটা সংজ্ঞা)। আপনি যদি bashশেল পেয়ে থাকেন (জিএনইউ / লিনাক্স, ম্যাক ওএস এক্স, সাইগউইন) এবং ফাইলগুলি বর্ণানুক্রমিক ক্রমে আমদানি করা যেতে পারে , আপনি এই আদেশটি ব্যবহার করতে পারেন:

for f in *.sql ; do psql -f $f ; done

এখানে psqlঅ্যাপ্লিকেশনটির ডকুমেন্টেশন (ধন্যবাদ, ফ্র্যাঙ্ক): http://www.postgresql.org/docs/current/static/app-psql.html


@ মুন সম্ভবত আপনার এসকিউএল ফাইলগুলিতে অ্যাক্সেসের অধিকার নেই? আপনি কোন অপারেটিং সিস্টেম চালু করছেন?
বলো

@ মুন এটি আপনার পোস্টগ্রাইএসকিউএল ব্যবহারকারীর সাথে সম্পর্কিত পাসওয়ার্ড (ইউজার-পাস পেয়ার পোস্টগ্র্রেএসকিউএলএ সংরক্ষণ করা হয়)।
বলো

8
@ মুন আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি আপনার সমস্যাটিকে তিনটি পর্যায়ে বিভক্ত করুন: 1) নিশ্চিত হয়ে নিন যে আপনি psqlদৌড়তে পারেন । : 2) নিশ্চিত করুন যে আপনার ব্যবহারকারী যেমন প্রয়োজনীয় লেখার বিশেষাধিকার রয়েছে CREATE, INSERT, UPDATE, ইত্যাদি 3) এসকিউএল ফাইল আমদানি করুন। আমি যতদূর বুঝতে পারি, আপনি এখন প্রথম পর্যায়ে আছেন at
বলো

@ বলো: আপনি কি তিনটি ধাপ উত্তরে রেখে দেবেন?
এএইচ

@ বলো, যেমন আপনি উল্লেখ করেছেন আমি এখন তৃতীয় পদক্ষেপে আছি। তবে আমি কীভাবে আমার স্থানীয় মেশিন থেকে .sql ফাইলটি আমদানি করতে পারি। আমি চেষ্টা করেছি \ i [এক্সটেনশন সহ পুরো পথ] তবে আমি ত্রুটি বার্তাটি পেয়েছি s এসকিএলএর কোনও ফাইল বা ডিরেক্টরি নেই। আপনি দয়া করে একটি উদাহরণ দিতে পারেন?

75

কমান্ড লাইনে প্রথমে ডিরেক্টরিতে পৌঁছে যেখানে পিএসএকএল উপস্থিত থাকে তারপরে কমান্ড লিখুন:

psql [database name] [username]

এবং তারপরে প্রবেশ করুন পিএসএইচএল ব্যবহারকারীকে পাসওয়ার্ড দেওয়ার জন্য পাসওয়ার্ড চেয়ে জিজ্ঞাসা করুন:

তারপর লিখ

> \i [full path and file name with extension]

তারপরে প্রবেশ সন্নিবেশ টিপুন।


আমি এটিও ব্যবহার করি। এবং এটি কাজ করে। তবে, আমি সরবরাহিত এসকিউএল বিবৃতি পরিবর্তন করি। পূর্বে বিদ্যমান *। এসকিউএল কোনও অক্ষর ব্যবহার করত না; একটি লাইন সমাপ্তি হিসাবে। এবং আমি অবশ্যই জিও অপসারণ করতে হবে। আপনি কি স্কিল স্ক্রিপ্টটি পিএসকিএল স্ক্রিপ্ট নয়?
সোদেব

আমি use i [এক্সটেনশন সহ পুরো পথ] ব্যবহার করার চেষ্টা করেছি তবে আমি ত্রুটি বার্তাটি পেয়েছি s এসকিএলএর কোনও ফাইল বা ডিরেক্টরি নেই। আপনি দয়া করে একটি উদাহরণ আপলোড করতে পারেন? ধন্যবাদ।

যদি \ i এ জাতীয় কোনও ফাইল না বলে থাকে তবে এটি সেই অবস্থানে কোনও ফাইল খুঁজে পায়নি। পরম ইউআরএল দেওয়া ভাল। উইন্ডোজে আমার জন্য, এই কমান্ডলাইনটি কাজ করেছিল: \ i /tmp/robert/test.sql অবশ্যই আপনার অবশ্যই সেই ফাইলটিতে বৈধ এসকিউএল কমান্ড থাকতে হবে।
শেভি

36

ভাল, আমি জানি সবচেয়ে সংক্ষিপ্ত উপায়টি নিম্নলিখিত:

psql -U {user_name} -d {database_name} -f {file_path} -h {host_name}

database_name: আপনার ফাইলের ডেটাটি কোন ডাটাবেসে sertোকানো উচিত?

ফাইল পাথ: আপনি যে ফাইলটি আমদানি করতে চান সেই ফাইলটির সম্পূর্ণ পথ।

হোস্ট_নাম: হোস্টের নাম। উন্নয়নের উদ্দেশ্যে, এটি বেশিরভাগ ক্ষেত্রেlocalhost

কনসোলে এই কমান্ডটি প্রবেশ করার পরে, আপনাকে আপনার পাসওয়ার্ড দেওয়ার জন্য অনুরোধ করা হবে।


25

"/" এবং "\" দিয়ে সাবধান থাকুন। এমনকি উইন্ডোজেও কমান্ডটি ফর্মটিতে থাকা উচিত:

\i c:/1.sql

1

সর্বদা সংযোগ পরিষেবা ফাইল ব্যবহার করা পছন্দ করে (অনুসন্ধান / গুগল 'পিএসকিএল সংযোগ পরিষেবা ফাইল')

তারপরে সহজভাবে:

psql service={yourservicename} < {myfile.sql}

কোথায় yourservicenameপরিষেবা ফাইল থেকে বিভাগের নাম ।

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