Câu trả lời:
Tạo tệp .BAT bằng lệnh sau:
for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause
Nếu bạn cần cung cấp tên người dùng và mật khẩu
for %%G in (*.sql) do sqlcmd /S servername /d databaseName -U username -P
password -i"%%G"
Lưu ý rằng "-E" không cần thiết khi người dùng / mật khẩu được cung cấp
Đặt tệp .BAT này vào thư mục mà bạn muốn các tệp .SQL được thực thi, nhấp đúp vào tệp .BAT và bạn đã hoàn tất!
for %%G in (*.sql) do sqlcmd /S servername /d databaseName -U username -P "password" -i"%%G"
Sử dụng FOR . Từ dấu nhắc lệnh:
c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
Trong SQL Management Studio, hãy mở một truy vấn mới và nhập tất cả các tệp như bên dưới
:r c:\Scripts\script1.sql
:r c:\Scripts\script2.sql
:r c:\Scripts\script3.sql
Nhấp vào Chế độ SQLCMD; tệp sẽ được chọn màu xám như bên dưới
:r c:\Scripts\script1.sql
:r c:\Scripts\script2.sql
:r c:\Scripts\script3.sql
Đảm bảo bạn đã bật SQLCMD bằng cách nhấp vào tùy chọn Truy vấn> Chế độ SQLCMD trong studio quản lý.
Giả sử bạn có bốn tệp .sql ( script1.sql,script2.sql,script3.sql,script4.sql
) trong một thư mục c:\scripts
.
Tạo một tệp script chính (Main.sql) như sau:
:r c:\Scripts\script1.sql
:r c:\Scripts\script2.sql
:r c:\Scripts\script3.sql
:r c:\Scripts\script4.sql
Lưu Main.sql trong chính c: \ scripts.
Tạo một tệp hàng loạt có tên ExecuteScripts.bat
như sau:
SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql
PAUSE
Hãy nhớ thay thế <YourDatabaseName>
bằng cơ sở dữ liệu mà bạn muốn thực thi các tập lệnh của mình. Ví dụ: nếu cơ sở dữ liệu là "Nhân viên", lệnh sẽ như sau:
SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
PAUSE
Thực thi tệp hàng loạt bằng cách nhấp đúp vào cùng một.
-b
ví dụ:SQLCMD -b -i "file 1.sql","file 2.sql"
Bạn có thể sử dụng ApexSQL Tuyên truyền . Nó là một công cụ miễn phí thực thi nhiều tập lệnh trên nhiều cơ sở dữ liệu. Bạn có thể chọn bao nhiêu tập lệnh tùy thích và thực thi chúng trên một hoặc nhiều cơ sở dữ liệu (thậm chí nhiều máy chủ). Bạn có thể tạo danh sách tập lệnh và lưu nó, sau đó chỉ cần chọn danh sách đó mỗi khi bạn muốn thực thi các tập lệnh đó theo thứ tự đã tạo (cũng có thể thêm nhiều danh sách tập lệnh):
Khi các tập lệnh và cơ sở dữ liệu được chọn, chúng sẽ được hiển thị trong cửa sổ chính và tất cả những gì bạn phải làm là nhấp vào nút “Thực thi” và tất cả các tập lệnh sẽ được thực thi trên các cơ sở dữ liệu đã chọn theo thứ tự nhất định:
Truy vấn chung
lưu các dòng dưới đây trong notepad với tên batch.bat và đặt bên trong thư mục chứa tất cả tệp script của bạn ở đó
for %%G in (*.sql) do sqlcmd /S servername /d databasename -i"%%G"
pause
THÍ DỤ
cho %% G in (* .sql) do sqlcmd / S NFGDDD23432 / d EMPLYEEDB -i "%% G" tạm dừng
đôi khi nếu đăng nhập không thành công cho bạn, vui lòng sử dụng mã dưới đây với tên người dùng và mật khẩu
for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause
cho %% G in (* .sql) do sqlcmd / S NE8148server / d EMPLYEEDB -U Scott -P tiger -i "%% G" tạm dừng
Sau khi bạn tạo tệp dơi bên trong thư mục chứa tệp Script của bạn, chỉ cần nhấp vào tệp dơi, các tập lệnh của bạn sẽ được thực thi
Tôi đã viết một tiện ích nguồn mở bằng C # cho phép bạn kéo và thả nhiều tệp SQL và bắt đầu chạy chúng trên cơ sở dữ liệu.
Tiện ích có các tính năng sau:
Cách dễ nhất mà tôi tìm thấy bao gồm các bước sau (yêu cầu duy nhất là nó phải có trong Win7 +):
Nghe thì có vẻ dài nhưng thực tế thì rất nhanh .. (nghe có vẻ dài như mình đã mô tả từng bước dù là nhỏ nhất)
Những gì tôi biết là bạn có thể sử dụng lệnh osql hoặc sqlcmd để thực thi nhiều tệp sql. Hạn chế là bạn sẽ phải tạo một tập lệnh cho cả hai lệnh.
Sử dụng SQLCMD để thực thi nhiều tập lệnh máy chủ SQL
OSQL (Cái này dành cho 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
)
Bước 1: các dòng trên copy vào note pad lưu nó dưới dạng bat.
step2: Trong thư mục abc ổ d trong tất cả các tệp Sql trong các truy vấn được thực thi trong máy chủ sql.
Bước 3: Cung cấp ip, id người dùng và mật khẩu của bạn.
Bạn có thể tạo một tập lệnh duy nhất gọi tất cả các tập lệnh khác.
Đặt những thứ sau vào một tệp hàng loạt:
@echo off
echo.>"%~dp0all.sql"
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"
Khi bạn chạy tệp lô đó, nó sẽ tạo một tập lệnh mới có tên all.sql
trong cùng thư mục nơi chứa tệp lô. Nó sẽ tìm kiếm tất cả các tệp có phần mở rộng .sql
trong cùng một thư mục chứa tệp hàng loạt.
Sau đó, bạn có thể chạy tất cả các tập lệnh bằng cách sử dụng sqlplus user/pwd @all.sql
(hoặc mở rộng tệp hàng loạt để gọi sqlplus
sau khi tạo all.sql
tập lệnh)
Để thực thi mọi tệp SQL trên cùng một thư mục, hãy sử dụng lệnh sau:
ls | awk '{print "@"$0}' > all.sql
Lệnh này sẽ tạo một tệp SQL duy nhất với tên của mọi tệp SQL trong thư mục được thêm vào bằng "@".
Sau khi all.sql
được tạo chỉ cần thực thi all.sql
với SQLPlus, điều này sẽ thực thi mọi tệp sql trong all.sql
.
Nếu bạn có thể sử dụng Interactive SQL:
1 - Tạo tệp .BAT với mã này:
@ECHO OFF ECHO
for %%G in (*.sql) do dbisql -c "uid=dba;pwd=XXXXXXXX;ServerName=INSERT-DB-NAME-HERE" %%G
pause
2 - Thay đổi pwd và ServerName.
3 - Đặt tệp .BAT vào thư mục chứa các tệp .SQL và chạy nó.