এসকিউএল স্ক্রিপ্ট কার্যকর করুন


102

আমি sqlite3 সংস্করণ 3.7.7, ইউনিক্স 11.4.2 এই আদেশটি ব্যবহার করে শুরু করব:

sqlite3 auction.db

যেখানে নিলাম.ডিবি ইতিমধ্যে তৈরি করা হয়নি।

sqlite> auction.db < create.sql;

আমাকে এই ত্রুটি দেয়: near "auction": syntax error

আমি কীভাবে স্ক্রিপ্টটি চালাতে পারি?

উত্তর:


128

এটি করার অনেকগুলি উপায় রয়েছে, একটি উপায়:

sqlite3 auction.db

অনুসরণ করেছেন:

sqlite> .read create.sql

সাধারণভাবে, এসকিউএলাইট প্রকল্পটিতে সত্যিই দুর্দান্ত ডকুমেন্টেশন রয়েছে! আমি জানি আমরা প্রায়শই ডক্সের আগে গুগলে পৌঁছে যাই, তবে এসকিউএলাইটের ক্ষেত্রে ডক্সগুলি প্রকৃতপক্ষে প্রযুক্তিগত লেখা। এটি পরিষ্কার, পরিষ্কার এবং সংক্ষিপ্ত।


4
Scritps ব্যবহারের জন্য, আপনি চালাতে পারেন .readথেকে সরাসরি কমান্ড sqlite3কমান্ড প্রয়োগ করুন: sqlite3 autction.db '.read create.sql'
ক্রিস লুয়েংগো

148

আপনি ভোজন করতে চান create.sqlমধ্যে sqlite3SQLite নিজেই ভেতর থেকে না, শেল থেকে:

$ sqlite3 auction.db < create.sql

এসকিউএল সংস্করণের এসকিউএল <ফাইলগুলি বুঝতে পারে না , আপনার শেলটি করে।


4
দুর্ভাগ্যক্রমে, সমস্ত শেল <ইনপুট পুনঃনির্দেশ হিসাবে বোঝে না । (যেমন, পাওয়ারশেল।)
অ্যালান

@ অ্যালান পাওয়ারশেলের কিছু ইনপুট পুনঃনির্দেশ প্রক্রিয়া আছে, না? এবং যদি না হয় সর্বদা বিটপসের পন্থা থাকে।
মিউ খুব ছোট

@ মিস্টুশোর্ট আমার মন্তব্য বিটপগুলিতে দেখুন। স্ক্লাইট ডট কমান্ডগুলি এসকিএল স্টেটমেন্ট প্যারামিটারে কাজ করে যাতে আপনি ইনপুট পুনঃনির্দেশের অবলম্বন না করে আপনার পছন্দসই ফাইলটি পড়তে পারেন।
ক্রিস বেক

@ ক্রিসবেক এগুলি বিভিন্ন সমাধান। <SQLite প্রম্পট তত্ক্ষণাত প্রস্থান করবে এবং ত্রুটি কোডটি শেলটিতে ফিরে আসবে। .read file.sqlপ্রম্পট ছেড়ে যাবে এবং -init file.sqlসর্বদা 0 ফিরে আসবে, তাই <স্ক্রিপ্টিংয়ের জন্য সেরা। এছাড়াও এটি ক্রস প্ল্যাটফর্মের মত নয় .readযা উইন্ডোজ পাথগুলিকে সমর্থন করে না।
TWiStErRob

24

সাধারণ প্রশ্নগুলি কার্যকর করতে এবং আমার শেল স্ক্রিপ্টে ফিরে আসার জন্য, আমি মনে করি এটি ভালভাবে কাজ করে:

$ sqlite3 example.db 'SELECT * FROM some_table;'

4
এটি কার্যকরভাবে মু খুব ছোট উত্তর answer
কর্নেল থার্টি টু

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

4
@ ক্রেইনিকা আমি মনে করি sqlite3 example.db 'SELECT * FROM some_table;'একটি প্রতিধ্বনি পাইপ না করে একটি ইনলাইন কমান্ড কার্যকর করার জন্য আরও মূর্তিমান উপায়
হ'ল

4
এছাড়াও, (সম্পাদনার পরে), এটি প্রদর্শন করে যে sqlite3কেবলমাত্র আধিপত্য থেকে নয় stdin, শেষ যুক্তি থেকেও কার্যকর করতে আদেশগুলি পড়ে ।
রাফায়েল আলমেডা

4

যারা পাওয়ারশেল ব্যবহার করছেন তাদের জন্য

PS C:\> Get-Content create.sql -Raw | sqlite3 auction.db

2

আপনি যদি উইন্ডোজের সিএমডি ব্যবহার করেন আপনি sqlite3 ব্যবহার করে ডাটাবেস তৈরি করতে এই কমান্ডটি ব্যবহার করতে পারেন

C:\sqlite3.exe DBNAME.db ".read DBSCRIPT.sql"

আপনার যদি সেই নামের সাথে একটি ডেটাবেস না থাকলে স্ক্লাইট 3 একটি তৈরি করে এবং আপনার যদি ইতিমধ্যে একটি থাকে তবে এটি এটি চালিয়ে যাবে তবে "ট্যাবলেমে ইতিমধ্যে বিদ্যমান" ত্রুটি থাকলে, আমি মনে করি আপনি ইতিমধ্যে বিদ্যমান একটি পরিবর্তন করতে এই কমান্ডটিও ব্যবহার করতে পারেন ডাটাবেস (তবে আমি নিশ্চিত নই)

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