ฉันมีไฟล์. sql จำนวนหนึ่งซึ่งฉันต้องเรียกใช้เพื่อใช้การเปลี่ยนแปลงที่ทำโดยนักพัฒนารายอื่นบนฐานข้อมูล SQL Server 2005 ไฟล์ถูกตั้งชื่อตามรูปแบบต่อไปนี้:
0001 - abc.sql
0002 - abcef.sql
0003 - abc.sql
...
มีวิธีเรียกใช้ทั้งหมดในครั้งเดียวหรือไม่?
ฉันมีไฟล์. sql จำนวนหนึ่งซึ่งฉันต้องเรียกใช้เพื่อใช้การเปลี่ยนแปลงที่ทำโดยนักพัฒนารายอื่นบนฐานข้อมูล SQL Server 2005 ไฟล์ถูกตั้งชื่อตามรูปแบบต่อไปนี้:
0001 - abc.sql
0002 - abcef.sql
0003 - abc.sql
...
มีวิธีเรียกใช้ทั้งหมดในครั้งเดียวหรือไม่?
คำตอบ:
สร้างไฟล์. 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" เมื่อระบุผู้ใช้ / รหัสผ่าน
วางไฟล์. BAT นี้ในไดเร็กทอรีที่คุณต้องการให้ไฟล์. SQL ถูกเรียกใช้งานดับเบิลคลิกที่ไฟล์. BAT เท่านี้ก็เสร็จสิ้น!
for %%G in (*.sql) do sqlcmd /S servername /d databaseName -U username -P "password" -i"%%G"
ใช้สำหรับ . จากพรอมต์คำสั่ง:
c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
ใน SQL Management Studio เปิดแบบสอบถามใหม่และพิมพ์ไฟล์ทั้งหมดตามด้านล่าง
:r c:\Scripts\script1.sql
:r c:\Scripts\script2.sql
:r c:\Scripts\script3.sql
คลิกที่โหมด SQLCMD; ไฟล์จะถูกเลือกเป็นสีเทาด้านล่าง
:r c:\Scripts\script1.sql
:r c:\Scripts\script2.sql
:r c:\Scripts\script3.sql
ตรวจสอบให้แน่ใจว่าคุณเปิดใช้งาน SQLCMD โดยคลิกที่ตัวเลือกโหมด Query> SQLCMD ในสตูดิโอการจัดการ
สมมติว่าคุณมีสี่ไฟล์ .sql ( script1.sql,script2.sql,script3.sql,script4.sql
) c:\scripts
ในโฟลเดอร์
สร้างไฟล์สคริปต์หลัก (Main.sql) ดังต่อไปนี้:
:r c:\Scripts\script1.sql
:r c:\Scripts\script2.sql
:r c:\Scripts\script3.sql
:r c:\Scripts\script4.sql
บันทึก Main.sql ใน c: \ scripts เอง
สร้างไฟล์แบตช์ที่ExecuteScripts.bat
มีชื่อดังต่อไปนี้:
SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql
PAUSE
อย่าลืมแทนที่<YourDatabaseName>
ด้วยฐานข้อมูลที่คุณต้องการเรียกใช้สคริปต์ของคุณ ตัวอย่างเช่นหากฐานข้อมูลเป็น "พนักงาน" คำสั่งจะเป็นดังนี้:
SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
PAUSE
เรียกใช้ไฟล์แบตช์โดยดับเบิลคลิกที่ไฟล์เดียวกัน
-b
ตัวอย่าง:SQLCMD -b -i "file 1.sql","file 2.sql"
คุณสามารถใช้ ApexSQL การเผยแพร่ เป็นเครื่องมือฟรีที่ดำเนินการหลายสคริปต์ในหลายฐานข้อมูล คุณสามารถเลือกสคริปต์ได้มากเท่าที่คุณต้องการและดำเนินการกับฐานข้อมูลเดียวหรือหลายฐานข้อมูล (แม้แต่หลายเซิร์ฟเวอร์) คุณสามารถสร้างรายการสคริปต์และบันทึกจากนั้นเลือกรายการนั้นทุกครั้งที่คุณต้องการเรียกใช้สคริปต์เดียวกันเหล่านั้นตามลำดับที่สร้างขึ้น (สามารถเพิ่มรายการสคริปต์หลายรายการได้ด้วย):
เมื่อสคริปต์และฐานข้อมูลถูกเลือกจะแสดงในหน้าต่างหลักและสิ่งที่คุณต้องทำคือคลิกปุ่ม“ ดำเนินการ” จากนั้นสคริปต์ทั้งหมดจะถูกเรียกใช้บนฐานข้อมูลที่เลือกตามลำดับที่กำหนด:
แบบสอบถามทั่วไป
บันทึกบรรทัดด้านล่างใน notepad ด้วยชื่อbatch.bat และวางไว้ในโฟลเดอร์ที่มีไฟล์สคริปต์ทั้งหมดของคุณอยู่
for %%G in (*.sql) do sqlcmd /S servername /d databasename -i"%%G"
pause
ตัวอย่าง
สำหรับ %% 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
สำหรับ %% G ใน (* .sql) ทำ sqlcmd / S NE8148server / d EMPLYEEDB -U Scott -P tiger -i "%% G" หยุดชั่วคราว
หลังจากที่คุณสร้างไฟล์ bat ภายในโฟลเดอร์ที่มีไฟล์ Script ของคุณอยู่แล้วเพียงแค่คลิกที่ไฟล์ bat สคริปต์ของคุณก็จะถูกเรียกใช้งาน
ฉันเขียนยูทิลิตี้โอเพนซอร์สใน C # ที่ให้คุณลากและวางไฟล์ SQL จำนวนมากและเริ่มรันกับฐานข้อมูล
ยูทิลิตี้นี้มีคุณสมบัติดังต่อไปนี้:
วิธีที่ง่ายที่สุดที่ฉันพบมีขั้นตอนต่อไปนี้ (ข้อกำหนดเดียวคือต้องอยู่ใน Win7 +):
ฟังดูยาว แต่ในความเป็นจริงเร็วมาก .. (ฟังดูนานเหมือนกันนะที่อธิบายแม้แต่ขั้นตอนที่เล็กที่สุด)
สิ่งที่ฉันรู้คุณสามารถใช้คำสั่ง osql หรือ sqlcmd เพื่อเรียกใช้ไฟล์ sql หลายไฟล์ ข้อเสียคือคุณจะต้องสร้างสคริปต์สำหรับทั้งคำสั่ง
การใช้ SQLCMD เพื่อเรียกใช้สคริปต์ SQL Server หลายตัว
OSQL (สำหรับ sql server 2000)
http://msdn.microsoft.com/en-us/library/aa213087(v=SQL.80).aspx
@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: ในโฟลเดอร์ d drive abc ในไฟล์ Sql ทั้งหมดในแบบสอบถามที่ดำเนินการในเซิร์ฟเวอร์ sql
ขั้นตอนที่ 3: ระบุไอพีรหัสผู้ใช้และรหัสผ่านของคุณ
คุณสามารถสร้างสคริปต์เดียวที่เรียกคนอื่น ๆ ทั้งหมด
ใส่สิ่งต่อไปนี้ลงในไฟล์แบตช์:
@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
สคริปต์)
สำหรับการเรียกใช้ SQLfile ทุกไฟล์บนไดเร็กทอรีเดียวกันให้ใช้คำสั่งต่อไปนี้:
ls | awk '{print "@"$0}' > all.sql
คำสั่งนี้จะสร้างไฟล์ SQL ไฟล์เดียวที่มีชื่อของไฟล์ SQL ทุกไฟล์ในไดเร็กทอรีต่อท้ายด้วย "@"
หลังจากall.sql
สร้างเสร็จแล้วให้ดำเนินการall.sql
กับ SQLPlus สิ่งนี้จะเรียกใช้ไฟล์ sql ทุกไฟล์ในไฟล์all.sql
.
หากคุณสามารถใช้ Interactive SQL:
1 - สร้างไฟล์. BAT ด้วยรหัสนี้:
@ECHO OFF ECHO
for %%G in (*.sql) do dbisql -c "uid=dba;pwd=XXXXXXXX;ServerName=INSERT-DB-NAME-HERE" %%G
pause
2 - เปลี่ยน pwd และ ServerName
3 - ใส่ไฟล์. BAT ในโฟลเดอร์ที่มีไฟล์. SQL และเรียกใช้