ডিরেক্টরিতে সমস্ত এসকিউএল ফাইল চালান


117

এসকিউএল সার্ভার ২০০৫ ডাটাবেসে অন্য বিকাশকারীদের দ্বারা পরিবর্তনগুলি প্রয়োগ করতে আমার চালাতে হয় এমন অনেকগুলি এসকিএল ফাইল রয়েছে। ফাইলগুলি নিম্নলিখিত প্যাটার্ন অনুসারে নামকরণ করা হয়েছে:

0001 - abc.sql
0002 - abcef.sql
0003 - abc.sql
...

তাদের সকলকে এক সাথে চালানোর কোনও উপায় আছে কি?

উত্তর:


143

নিম্নলিখিত কমান্ড সহ একটি .BAT ফাইল তৈরি করুন:

for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause

আপনার যদি প্রয়োজন হয় ব্যবহারকারীর নাম এবং পাসওয়ার্ড

for %%G in (*.sql) do sqlcmd /S servername /d databaseName -U username -P 
password -i"%%G"

নোট করুন যে যখন ব্যবহারকারী / পাসওয়ার্ড সরবরাহ করা হয় তখন "-E" প্রয়োজন হয় না

আপনি .SQL ফাইলগুলি কার্যকর করতে চান সেই ডিরেক্টরিতে এই .BAT ফাইলটি স্থাপন করুন, .BAT ফাইলটিতে ডাবল ক্লিক করুন এবং আপনি হয়ে গেছেন!


2
আমি যখন ব্যাচ ফাইলটি কার্যকর করি তখন কিছু প্রমাণীকরণের সমস্যা দেখা দেয় "লগইন ব্যর্থ The সার্ভারের নাম এবং ডাটাবেসের মতো ব্যবহারকারীর নাম এবং পাসওয়ার্ড দেওয়ার মতো কোনও উপায় আছে কি?
সঞ্জয় মহার্জান

11
@ সঞ্জয়মাহার্জান ব্যবহারকারীর জন্য ইউ-ইউ এবং পাসওয়ার্ডের জন্য পি ব্যবহার করুন:for %%G in (*.sql) do sqlcmd /S servername /d databaseName -U username -P "password" -i"%%G"
রিক্কডব

আমি কীভাবে -o ব্যবহার করে আউটপুটটি পৃথক করে রাখতে পারি আমি যখনই -o টেম্প্টেক্স্ট ব্যবহার করি তখনই এই টেম্প টেক্সট ওভাররাইট করা হয়। আমি আউটপুট ফাইলগুলি একই স্কেল ফাইলের নাম হিসাবে পেতে চাই।
কেভিন

@ উইজেথ: ভাল কাজের মানুষ। আমি এক এক করে প্রায় 200 বর্গফুট ফাইল করার কথা ভাবছিলাম। অনেক সময়
সাশ্রয় করেছেন

@ ভিজেথ আপনাকে ধন্যবাদ আমি কেবল নিজের জন্য পরিবর্তন করছি: কেবল আরইএম আরএম বিকাশের পরিবেশ !! আরএমএম বিরতি %% G in (* .sql) do sqlcmd / S "192.168.10.139 \ SQLEXPPress" / d "TESTDEV_DB" -U "atiur" -P "atiur" -i "%% G" বিরতি দিয়ে REM সমস্ত স্ক্রিপ্ট সাফল্যের সাথে আরএম চালান
এটিক সরকার

71

জন্য ব্যবহার করুন । কমান্ড প্রম্পট থেকে:

c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"

2
এটিকে ফাঁকা স্থানের স্ক্রিপ্টগুলির সাথে কাজ করার জন্য আমাকে সর্বশেষ "% f" এর আশেপাশে উদ্ধৃতি যুক্ত করতে হয়েছিল
স্টিভ রাইট

ব্যাচ ফাইলে কাজ করে এমন কোনও সংস্করণের জন্য, এই উত্তরটি দেখুন
ইয়ান কেম্প

আমাকে আরও কিছু প্যারাম যুক্ত করতে হয়েছিল (উদাঃ / আমি উদ্ধৃত শনাক্তকারীদের সক্ষম করতে)
পাভেল কে

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

2
@ রিচ আউটপুট ফাইলে পুনর্নির্দেশ করতে, এই কমান্ডটি ব্যবহার করুন: for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f" >> sql.log 2>&1) আপনি আউটপুট পুনঃনির্দেশ সম্পর্কে আরও পড়তে পারেন এখানে
ডানিজেলক

26
  1. এসকিউএল ম্যানেজমেন্ট স্টুডিওতে একটি নতুন কোয়েরি খুলুন এবং নীচের মতো সমস্ত ফাইল টাইপ করুন

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
  2. এসকিউএল ম্যানেজমেন্ট স্টুডিওতে ক্যোয়ারী মেনুতে যান এবং এসকিউএলসিএমডি মোড সক্ষম হয়েছে তা নিশ্চিত করুন
  3. এসকিউএলসিএমডি মোডে ক্লিক করুন; ফাইলগুলি নীচে ধূসর হিসাবে নির্বাচন করা হবে

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
  4. এখন এক্সিকিউট করুন

3
আমার কাছে শত শত ফাইল থাকলে এটি সত্যিই ক্লান্তিকর।
18:38

1
@ ডিভালিনকর্ণেট: সম্ভবত আপনি পদক্ষেপ ১ টি স্বয়ংক্রিয় করার একটি উপায় নিয়ে আসতে পারেন যেমন "dir / B * .sql> list.txt", এবং তারপরে সেই list.txt ফাইলটিকে কিছুটা ম্যাসেজ করুন।
জেফ রো

উইন্ডোজের নতুন সংস্করণগুলিতে @ ডিফলিঙ্কনারেট, আপনি শিফট কীটি ধরে রাখতে পারেন, কোনও ফাইলকে ডান ক্লিক করতে পারেন এবং "পথ হিসাবে অনুলিপি" নির্বাচন করতে পারেন। সেখান থেকে, একটি এসএমএস উইন্ডোতে CTRL + V। এটি একাধিক ফাইলের সাথেও কাজ করে। এক্সপ্লোরারে দুটি বা ততোধিক ফাইল নির্বাচন করুন, হাইলাইট করা ফাইলগুলির মধ্যে যে কোনও একটিতে ডান ক্লিক করুন এবং "পথ হিসাবে অনুলিপি করুন" নির্বাচন করুন। এসএসএমএসে পদক্ষেপগুলি পুনরাবৃত্তি করুন। ফাইল পাথগুলি ডাবল-কোটে আবদ্ধ থাকে, যা আপনি এসএসএমএসে সন্ধান / প্রতিস্থাপনের মাধ্যমে বের করতে বা না চাইতে পারেন।
ডেভ ম্যাসন

21

ম্যানেজমেন্ট স্টুডিওতে কোয়েরি> এসকিউএলসিএমডি মোড অপশনে ক্লিক করে আপনার এসকিউএলসিএমডি সক্ষম হয়েছে তা নিশ্চিত করুন।

  1. ধরুন আপনার ফোল্ডারে চারটি .sql ফাইল ( script1.sql,script2.sql,script3.sql,script4.sql) রয়েছে c:\scripts

  2. নিম্নলিখিতগুলি সহ একটি প্রধান স্ক্রিপ্ট ফাইল (মেইন.এসকিউএল) তৈরি করুন:

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    :r c:\Scripts\script4.sql

    মেইন.এসকিউএল সি: \ স্ক্রিপ্টগুলিতে সংরক্ষণ করুন।

  3. ExecuteScripts.batনিম্নলিখিতগুলির সাথে নামযুক্ত একটি ব্যাচ ফাইল তৈরি করুন :

    SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql
    PAUSE

    <YourDatabaseName>আপনি আপনার স্ক্রিপ্টগুলি কার্যকর করতে চান এমন ডাটাবেসটি প্রতিস্থাপন করতে ভুলবেন না। উদাহরণস্বরূপ, ডাটাবেসটি যদি "কর্মচারী" হয় তবে কমান্ডটি নিম্নলিখিত হবে:

    SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
    PAUSE
  4. একই ডাবল ক্লিক করে ব্যাচ ফাইলটি কার্যকর করুন।


আমি আমার উত্তরটি সম্পাদনা করেছি। এছাড়াও, নির্দিষ্ট স্ক্রিপ্টের ফাইলগুলি স্ক্রিপ্ট ফাইলগুলির উপস্থিত রয়েছে তা নিশ্চিত করা দরকার।
আশীষ গুপ্ত

এই পদ্ধতির সম্পর্কে ভাল বিষয়টি হ'ল যে কোনও ত্রুটি পাওয়া গেছে তারপরে আরও স্ক্রিপ্টগুলি কার্যকর করা বন্ধ করুন :) -bউদাহরণস্বরূপ:SQLCMD -b -i "file 1.sql","file 2.sql"
জায়েদার

এবং এই পদ্ধতির সম্পর্কে খারাপ জিনিসটি যা চালাতে হয় তা সকল এসকিউএল ফাইলের তালিকা বজায় রাখতে হয়।
ফ্রান্সিসকো ডি'আঙ্কোনিয়া 18

10

আপনি অ্যাপেক্সএসকিউএল প্রচার ব্যবহার করতে পারেন । এটি একটি নিখরচায় সরঞ্জাম যা একাধিক ডাটাবেসে একাধিক স্ক্রিপ্ট কার্যকর করে। আপনি প্রয়োজন হিসাবে অনেক স্ক্রিপ্ট নির্বাচন করতে পারেন এবং এক বা একাধিক ডাটাবেস (এমনকি একাধিক সার্ভার) এর বিরুদ্ধে এগুলি কার্যকর করতে পারেন। আপনি স্ক্রিপ্ট তালিকা তৈরি করতে এবং এটি সংরক্ষণ করতে পারেন, তারপরে আপনি তৈরি ক্রমে একই স্ক্রিপ্টগুলি চালানোর জন্য প্রতিবার কেবল সেই তালিকাটি নির্বাচন করুন (একাধিক স্ক্রিপ্টের তালিকাও যুক্ত করা যেতে পারে):

স্ক্রিপ্ট নির্বাচন করুন

যখন স্ক্রিপ্ট এবং ডাটাবেসগুলি নির্বাচন করা হয়, সেগুলি মূল উইন্ডোতে প্রদর্শিত হবে এবং আপনাকে যা করতে হবে তা হল "এক্সিকিউট" বোতামটি ক্লিক করা এবং সমস্ত স্ক্রিপ্টগুলি প্রদত্ত ক্রমে নির্বাচিত ডাটাবেসে কার্যকর করা হবে:

স্ক্রিপ্ট কার্যকর


8

সাধারণ জিজ্ঞাসা

নোটপ্যাডে নীচের লাইনগুলি ব্যাচ.বাট নামের সাথে সংরক্ষণ করুন এবং যেখানে আপনার সমস্ত স্ক্রিপ্ট ফাইল রয়েছে সেই ফোল্ডারের ভিতরে রাখুন

 for %%G in (*.sql) do sqlcmd /S servername /d databasename  -i"%%G"
    pause

EXAMPLE টি

%% G ইন (* .sql) এর জন্য sqlcmd / S NFGDDD23432 / d EMPLYEEDB -i "%% G" বিরতি দিন

যদি আপনার জন্য লগইন ব্যর্থ হয় তবে দয়া করে ব্যবহারকারীর নাম এবং পাসওয়ার্ড সহ নীচের কোডটি ব্যবহার করুন

for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause

(* .sql) না sqlcmd / এস এ %% জি জন্য NE8148server / ডি EMPLYEEDB -U স্কট -P বাঘ -i "%% জি" বিরতি

আপনি যে ফোল্ডারে আপনার স্ক্রিপ্ট ফাইলগুলি আছে সেখানে ব্যাট ফাইলটি তৈরি করার পরে আপনার স্ক্রিপ্টগুলি কার্যকর হবে bat


5

আমি সি # তে একটি ওপেন সোর্স ইউটিলিটি লিখেছি যা আপনাকে অনেকগুলি এসকিউএল ফাইলগুলি টেনে আনতে এবং ছাড়তে দেয় এবং এটি একটি ডাটাবেসের বিরুদ্ধে চালানো শুরু করে।

ইউটিলিটির নিম্নলিখিত বৈশিষ্ট্যগুলি রয়েছে:

  • স্ক্রিপ্ট ফাইলগুলি টেনে আনুন
  • স্ক্রিপ্ট ফাইলগুলির একটি ডিরেক্টরি চালান
  • এসকিউএল স্ক্রিপ্ট কার্যকর করার সময় বার্তা রাখে
  • স্ক্রিপ্টটি পাস বা ব্যর্থ হয়েছে যা রঙিন সবুজ এবং লাল (চলার জন্য হলুদ)
  • ত্রুটি বিকল্প অন বন্ধ করুন
  • ত্রুটি বিকল্পে স্ক্রিপ্ট খুলুন
  • প্রতিটি স্ক্রিপ্টের জন্য সময় নিয়ে রিপোর্ট চালান
  • মোট সময়কাল সময়
  • পরীক্ষা ডিবি সংযোগ
  • Asynchronus
  • । নেট 4 এবং এসকিউএল 2008 এর সাথে পরীক্ষিত
  • একক এক্স ফাইল
  • যেকোন সময় সংযোগ হত্যা

3

আমি যে সবচেয়ে সহজ উপায়টি পেয়েছি তাতে নিম্নলিখিত পদক্ষেপগুলি অন্তর্ভুক্ত রয়েছে (এটি কেবলমাত্র উইন 7+ এ থাকা প্রয়োজন):

  • এক্সপ্লোরারে ফোল্ডারটি খুলুন
  • সমস্ত স্ক্রিপ্ট ফাইল নির্বাচন করুন
  • শিফট টিপুন
  • নির্বাচন ক্লিক করুন এবং "পথ হিসাবে অনুলিপি" নির্বাচন করুন
  • এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে যান
  • একটি নতুন কোয়েরি তৈরি করুন
  • অনুসন্ধান মেনু, "এসকিউএলসিএমডি মোড"
  • তালিকাটি পেস্ট করুন, তারপরে Ctrl + H, '"r: \' (অথবা ড্রাইভ লেটার যাই হোক না কেন) এর সাথে ': r" সি:' (অর্থাত্ ': আর' দিয়ে রেখাগুলি উপস্থাপন করুন) প্রতিস্থাপন করুন
  • কোয়েরি চালান

এটি দীর্ঘ শোনাচ্ছে, তবে বাস্তবে এটি খুব দ্রুত .. (আমি এমনকি ক্ষুদ্রতম পদক্ষেপগুলি বর্ণনা করার সাথে এটি দীর্ঘ শোনাচ্ছে)


2

আমি যা জানি আপনি একাধিক এসকিএল ফাইলগুলি কার্যকর করতে osql বা sqlcmd কমান্ড ব্যবহার করতে পারেন। অপূর্ণতা হ'ল আপনাকে উভয় কমান্ডের জন্য একটি স্ক্রিপ্ট তৈরি করতে হবে।

একাধিক এসকিউএল সার্ভার স্ক্রিপ্টগুলি কার্যকর করতে এসকিউএলসিএমডি ব্যবহার করে

ওএসকিউএল (এটি স্কেল সার্ভার 2000 এর জন্য)

http://msdn.microsoft.com/en-us/library/aa213087(v=SQL.80).aspx


1
@echo off
cd C:\Program Files (x86)\MySQL\MySQL Workbench 6.0 CE

for %%a in (D:\abc\*.sql) do (
echo %%a
mysql --host=ip --port=3306 --user=uid--password=ped < %%a
)

পদক্ষেপ 1: উপরের লাইনগুলি নোট প্যাডে অনুলিপি করে এটি ব্যাট হিসাবে সংরক্ষণ করুন।

পদক্ষেপ 2: এসকিউএল সার্ভারে এক্সিকিউট করা প্রশ্নের মধ্যে সমস্ত এসকিউএল ফাইলগুলিতে ডি ড্রাইভ এবিসি ফোল্ডারে।

স্টিপি 3: আপনার আইপি, ব্যবহারকারী আইডি এবং পাসওয়ার্ড দিন।


এই প্রশ্নটি মাইএসকিউএল নয়, এমএসএসকিউএল সম্পর্কিত।
শান

0

আপনি একটি একক স্ক্রিপ্ট তৈরি করতে পারেন যা অন্য সকলকে কল করে।

নিম্নলিখিতগুলি একটি ব্যাচের ফাইলে রাখুন:

@echo off
echo.>"%~dp0all.sql"
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"

আপনি যখন ব্যাচ ফাইলটি চালান এটি ব্যাচ ফাইলটি all.sqlযেখানে অবস্থিত সেখানে একই ডিরেক্টরিতে একটি নতুন স্ক্রিপ্ট তৈরি করবে । এটি .sqlব্যাচ ফাইলটি যেখানে অবস্থিত সেখানে একই ডিরেক্টরিতে এক্সটেনশন সহ সমস্ত ফাইল সন্ধান করবে ।

তারপরে আপনি সমস্ত স্ক্রিপ্ট ব্যবহার করে চালাতে পারেন sqlplus user/pwd @all.sql(বা স্ক্রিপ্ট sqlplusতৈরির পরে কল করার জন্য ব্যাচ ফাইলটি প্রসারিত করুন all.sql)


0

একই ডিরেক্টরিতে প্রতিটি এসকিউএল ফাইল চালানোর জন্য নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

ls | awk '{print "@"$0}' > all.sql

এই কমান্ডটি "@" দ্বারা যুক্ত ডিরেক্টরিতে প্রতিটি এসকিউএল ফাইলের নাম সহ একটি একক এসকিউএল ফাইল তৈরি করবে।

তৈরি করার পরে all.sqlকেবল all.sqlএসকিউএলপ্লাস দিয়ে এক্সিকিউট করুন, এটি প্রতিটি স্ক্যুয়াল ফাইল এক্সিকিউট করবে all.sql


0

আপনি যদি ইন্টারেক্টিভ এসকিউএল ব্যবহার করতে পারেন:

1 - এই কোড সহ একটি .BAT ফাইল তৈরি করুন:

@ECHO OFF ECHO
for %%G in (*.sql) do dbisql -c "uid=dba;pwd=XXXXXXXX;ServerName=INSERT-DB-NAME-HERE" %%G
pause

2 - পিডাব্লুডি এবং সার্ভারনাম পরিবর্তন করুন।

3 - .SQL ফাইল রয়েছে এমন ফোল্ডারে .BAT ফাইলটি রাখুন এবং এটি চালান।

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