當前位置:首頁 » 編程語言 » 腳本執行sql語句

腳本執行sql語句

發布時間: 2025-01-17 04:47:51

『壹』 shell腳本里執行多個sql語句問題

你沒有理解輸入重定向的概念。在你上面的代碼中,mysql -uDDAP -p$2是包含在輸入重定向范圍內的,所以不會提示你輸入密碼的。
你的$1 和$2也沒有定義,可以參考如下寫法:
#!/bin/sh
read -p "please input root password" pwd
mysql -uroot -p$pwd << EOF
\. /usr/src/DDAP-1.CreateUser.SQL
\. /usr/src/DDAP-2.CreateDatabase.SQL
\. /usr/src/DDAP-3.CreateTable.SQL
\. /usr/src/DDAP-4.CreateProcereAndFunction.SQL
\. /usr/src/DDAP-5.CreateData.SQL
EOF

『貳』 Linux下如何運行sql腳本

Linux運行sql腳本的具體操作步驟如下:

1、使用shell工具登陸到安裝postgresql的伺服器,切換到postgres用戶,postgresql默認的操作用戶,命令是:su - postgres,查看當前路徑是/var/lib/psql,創建一個test.sql腳本文件,命令是:vim test.sql。

『叄』 如何使用sqlcmd在批處理腳本中執行SQL

使用sqlcmd可以在批處理腳本中執行SQL。雖然這個命令的參數很多,但幸運的是,我們不需要全部理解,在這里簡要介紹以下幾個:x0dx0a{ -U login_id [ -P password ] } | _E trusted connection }] 如果指定了-E就不需要指定用戶名密碼,當然指定了用戶名密碼就不用-E了;x0dx0a-S server_name [ \ instance_name ] 資料庫伺服器,如果不在本機的話必須指定;x0dx0a-d db_name 資料庫名字,必須的;x0dx0a[ -i input_file ] [ -o output_file ] sql存在文件里的話用-i,輸出到文件用-o;x0dx0a[ -q "cmdline query" ] [ -Q "cmdline query" and exit ] 輸入是簡單的sql,不用文件,推薦用-Q,如果你執行完sqlcmd還需要執行別的動作的話;x0dx0a[ -W remove trailing spaces ] 刪除多餘的空格,結果會更緊湊。x0dx0a當我們在真正的腳本中執行sql時,通常需要傳入和輸出變數。x0dx0a傳入變數比較簡單,如下所示:x0dx0asqlcmd -d test -Q "select * from dbo.Investment where investor=$(x)" -v x='IBM' -Wx0dx0a這個語句從test資料庫的Investment表中選出investor等於x的所有行,注意到變數x被包含在${}中。x0dx0a然後用-v定義了x的值,'IBM'。x0dx0a-W確定輸出的結果不包含多餘的空格。x0dx0ax的值如果沒有在sqlcmd中設定,系統會試圖從別的地方去尋找,可能的地方包括,系統環境變數,用戶環境變數,以及用在sqlcmd之前用set設定的變數值。x0dx0a如果你的數據里確實包含${},那麼你並不希望進行變數的替換,使用-x選項可以禁止變數的替換。x0dx0a有些時候,你還希望能獲得sql執行結果並保存到變數中。比如你們的日誌系統每天都在產生日誌文件,你要執行一個腳本來處理這些日誌文件並存到資料庫中。在處理之前,你必須讀取資料庫以確定上次處理到那一天了。你期望這樣能解決你的問題:x0dx0asqlcmd -d test -Q "select ${x}=max(date) from dbo.logDates " -Wx0dx0a但這樣並不工作。因為sqlcmd並不提供輸出變數。x0dx0a不過你可以這樣做:x0dx0asqlcmd -d test -Q "declare @x nvarchar(8);select @x=max(date) from dbo.logDates;print @x; " -Wx0dx0a這樣你就可以得到一個乾乾凈凈的數字,而不會包含列名和其他信息。x0dx0a接著你將上述結果導入到一個文件里:x0dx0asqlcmd -d test -Q "declare @x nvarchar(8);select @x=max(date) from dbo.logDates;print @x; " -W 1.txtx0dx0a現在到了最關鍵的一步,將文件的內容寫入到變數里:x0dx0aset /P myvar=<1.txtx0dx0a/p表明這個變數myvar的值需要用戶輸入;x0dx0a<1.txt表明從1.txt中讀入而不是從其他地方讀入。x0dx0a這樣,我們就巧妙的把sql執行的結果寫入到變數里了。

『肆』 怎樣讓perl腳本中執行sql語句

首先得確保安裝了資料庫介面模塊和相應資料庫的驅動模塊,如果是用MySql資料庫(開源免費新手入門學習都喜歡),則需要確定DBI和DBD::mysql這兩個模塊是否安裝;
然後在perl腳本中寫:
!#usr/bin/perl -w
use strict;
use DBI; #使用DBI模塊,DBD::mysql是驅動不必在腳本中使用,安裝了就行
my $dbname = ""; #引號里填上資料庫名
my $ip = ""; #引號里填上要訪問的資料庫的ip地址,資料庫是本機就寫127.0.0.1
my $port = ""; #引號里填上要訪問的資料庫的埠號,mysql默認埠號是3306
my $host = "dbi:mysql:" . $dbname . ":" . $ip . ":" . $port ;
my $user = "root"; #訪問資料庫使用的用戶名
my $password = "xXxX"; #該用戶名所使用的密碼
my $dbh = DBI -> connect($host,$user,$password) or die "$@"; #與資料庫建立連接
$dbh -> do("set names \'gbk\';"); #設置輸出中文不亂碼
while(1) #條件永遠為真,除非人為終止,否則不會停止
{ #可以使用control+c停止腳本執行
my $sql = ""; #引號里填上sql語句
$sth = $dbh -> prepare($sql); #送入資料庫做准備
$sth -> execute(); #執行這條sql語句
sleep(300); #設置300秒暫停執行,300秒後繼續執行while
}
$dbh -> disconnect(); #斷開與資料庫的連接
這里使用的是最新的perl和最新的mysql最新,不是復制粘貼別人代碼,前幾天還在用,保證思路沒有問題。

熱點內容
安全加密配置成功是什麼 發布:2025-01-17 08:49:40 瀏覽:856
直流電存儲 發布:2025-01-17 08:47:33 瀏覽:552
容聲冰箱壓縮機多少錢 發布:2025-01-17 08:18:38 瀏覽:886
微信怎麼取消密碼怎麼設置 發布:2025-01-17 08:06:18 瀏覽:793
如何帳戶密碼 發布:2025-01-17 07:56:11 瀏覽:612
伺服器內網ip地址安全 發布:2025-01-17 07:33:18 瀏覽:186
華為新演算法 發布:2025-01-17 07:31:43 瀏覽:56
希沃如何存儲 發布:2025-01-17 07:31:00 瀏覽:552
演算法研讀 發布:2025-01-17 07:19:37 瀏覽:280
我的世界橙子生存之旅伺服器ip 發布:2025-01-17 07:19:27 瀏覽:618