c生成sql腳本
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Data.SqlClient;
namespace openfile
{
class Program
{
static void Main(string[] args)
{
baseclass bs=new baseclass();
System.Console.WriteLine("請輸入路徑(例'c://cmd.sql')");//輸入你要執行文件的目錄
string path=System.Console.ReadLine();
string sql=bs.sql(path);
int i = 0;
SqlConnection con = new SqlConnection("server=.;database=oracle9i;user id=sa;password=123");//可以根據你自己的機子設置的資料庫,用戶名,密碼而定
SqlCommand com = new SqlCommand(sql,con);
con.Open();
for (; i < sql.Length; i++)
{
if (sql.Substring(i, 0) != " ")
break;
}
if(sql.Substring(i,6)=="select")
{
SqlDataReader dr;
dr=com.ExecuteReader();
while(dr.Read())
{
System.Console.WriteLine(dr[0].ToString());
}
}
else
{
com.ExecuteNonQuery();
System.Console.WriteLine("操作成功!");
}
System.Console.ReadLine();
}
}
class baseclass
{
public string sql(string filepath)
{
StreamReader str = null;
string sm="";
try
{
str = File.OpenText(filepath);
while (str.Peek() != -1)
{
sm = str.ReadLine();
}
str.Close();
}
catch
{
sm = "";
}
return sm;
}
public void resoust(string sql)
{
}
}
}
2. Sqlserver,如何利用命令行或者sql腳本導出可執行的sql腳本
SQL Server並不包含這個功能,只能靠第三方的代碼了。
用這個存儲過程可以實現:
CREATE PROCEDURE dbo.UspOutputData
@tablename sysname
AS
declare @column varchar(1000)
declare @columndata varchar(1000)
declare @sql varchar(4000)
declare @xtype tinyint
declare @name sysname
declare @objectId int
declare @objectname sysname
declare @ident int
set nocount on
set @objectId=object_id(@tablename)
if @objectId is null -- 判斷對象是否存在
begin
print 'The object not exists'
return
end
set @objectname=rtrim(object_name(@objectId))
if @objectname is null or charindex(@objectname,@tablename)=0 --此判斷不嚴密
begin
print 'object not in current database'
return
end
if OBJECTPROPERTY(@objectId,'IsTable') < > 1 -- 判斷對象是否是table
begin
print 'The object is not table'
return
end
select @ident=status&0x80 from syscolumns where id=@objectid and status&0x80=0x80
if @ident is not null
print 'SET IDENTITY_INSERT '+@TableName+' ON'
declare syscolumns_cursor cursor
for select c.name,c.xtype from syscolumns c where c.id=@objectid order by c.colid
open syscolumns_cursor
set @column=''
set @columndata=''
fetch next from syscolumns_cursor into @name,@xtype
while @@fetch_status < >-1
begin
if @@fetch_status < >-2
begin
if @xtype not in(189,34,35,99,98) --timestamp不需處理,image,text,ntext,sql_variant 暫時不處理
begin
set @column=@column+case when len(@column)=0 then'' else ','end+@name
set @columndata=@columndata+case when len(@columndata)=0 then '' else ','','','
end
+case when @xtype in(167,175) then '''''''''+'+@name+'+''''''''' --varchar,char
when @xtype in(231,239) then '''N''''''+'+@name+'+''''''''' --nvarchar,nchar
when @xtype=61 then '''''''''+convert(char(23),'+@name+',121)+''''''''' --datetime
when @xtype=58 then '''''''''+convert(char(16),'+@name+',120)+''''''''' --smalldatetime
when @xtype=36 then '''''''''+convert(char(36),'+@name+')+''''''''' --uniqueidentifier
else @name end
end
end
fetch next from syscolumns_cursor into @name,@xtype
end
close syscolumns_cursor
deallocate syscolumns_cursor
set @sql='set nocount on select ''insert '+@tablename+'('+@column+') values(''as ''--'','+@columndata+','')'' from '+@tablename
print '--'+@sql
exec(@sql)
if @ident is not null
print 'SET IDENTITY_INSERT '+@TableName+' OFF'
GO
使用方法:
exec UspOutputData 你的表名
然後將運行後的結果存成.sql,加上用SQL Server生成的資料庫腳本就可以了
3. 擴展名是sql的腳本怎麼弄啊,這個文件到底有什麼用,該怎麼用,回答好的報酬多多
SQL:Informix SQL查詢;通常被資料庫產品用於SQL查詢(腳本、文本、二進制)的文件擴展名
{SQL全稱是「結構化查詢語言(Structured Query Language)」
SQL(Structured Query Language)是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統。
SQL同時也是資料庫腳本文件的擴展名。
SQL是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統可以使用相同的SQL語言作為數據輸入與管理的介面。它以記錄集合作為操作對象,所有SQL語句接受集合作為輸入,返回集合作為輸出,這種集合特性允許一條SQL語句的輸出作為另一條SQL語句的輸入,所以SQL語句可以嵌套,這使他具有極大的靈活性和強大的功能,在多數情況下,在其他語言中需要一大段程序實現的功能只需要一個SQL語句就可以達到目的,這也意味著用SQL語言可以寫出非常復雜的語句。
結構化查詢語言(Structured Query Language)最早是IBM的聖約瑟研究實驗室為其關系資料庫管理系統SYSTEM R開發的一種查詢語言,它的前身是SQUARE語言。SQL語言結構簡潔,功能強大,簡單易學,所以自從IBM公司1981年推出以來,SQL語言得到了廣泛的應用。如今無論是像Oracle、Sybase、Informix、SQL Server這些大型的資料庫管理系統,還是像Visual Foxporo、PowerBuilder這些PC上常用的資料庫開發系統,都支持SQL語言作為查詢語言。
美國國家標准局(ANSI)與國際標准化組織(ISO)已經制定了SQL標准。ANSI是一個美國工業和商業集團組織,負責開發美國的商務和通訊標准。ANSI同時也是ISO和International Electrotechnical Commission(IEC)的成員之一。ANSI 發布與國際標准組織相應的美國標准。1992年,ISO和IEC發布了SQL國際標准,稱為SQL-92。ANSI隨之發布的相應標準是ANSI SQL-92。ANSI SQL-92有時被稱為ANSI SQL。盡管不同的關系資料庫使用的SQL版本有一些差異,但大多數都遵循 ANSI SQL 標准。SQL Server使用ANSI SQL-92的擴展集,稱為T-SQL,其遵循ANSI制定的 SQL-92標准。
SQL語言包含4個部分:
※ 數據定義語言(DDL),例如:CREATE、DROP、ALTER等語句。
※ 數據操作語言(DML),例如:INSERT、UPDATE、DELETE語句。
※ 數據查詢語言(DQL),例如:SELECT語句。
※ 數據控制語言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等語句。
SQL語言包括三種主要程序設計語言類別的陳述式:數據定義語言(DDL),數據操作語言(DML)及數據控制語言(DCL)。 }
如果用SQL SERVER資料庫,在你建立的好的表上右鍵,然後選擇"所有任務"裡面有一項叫"生成SQL腳本",裡面還有些選項,可以查看SQL的聯機幫助
4. 如何使用c#執行一個.SQL腳本文件
有兩種方法:
1。在A2.c中有完整的函數定義,在A1.c中添加一下要用到的函數原型(聲明)就可以了,例如:
在A2.c中:有函數void A2(){...};
在A1.c中:在文件前頭增加一行:void A2();就可以了
2。把A2.c中完整定義的函數的原型,寫到一個A2.h文件中,然後在A1.c的文件頭增加#include "A2.h"就可以了
以上兩種方法,在A1.c中都可以正常的調用,就跟在A2.c中調用一樣。
其實函數默認是外部的,只要在其他文件中聲明就能使用; 但是注意如果在前面加上static , 就只能在本文件中使用了, 不能再被其他的文件調用。
5. 如何生成SQL2012的腳本
1.打開Management Studio,登錄到伺服器,在資料庫中選擇要轉移的資料庫,
右鍵--「任務(T)」--「生成腳本(E)...」。
2.在「生成和發布腳本」窗口中,點擊「下一步」,
3.「選擇要編寫腳本的資料庫對象」,可以不做設置,點擊「下一步」,
4.點擊[保存到文件]右邊的「高級」按鈕,在對話框中,設置「為伺服器版本編寫腳本」為「SQL Server 2008 R2」,
設置「要編寫腳本的數據的類型」為「架構和數據」。選擇保存腳本的位置。
5.下一步,再下一步。導出完成。
SQL Server 2008 R2導入的過程
1.打開Management Studio,登錄到伺服器,
2.選擇菜單「文件」——「打開」——「文件」,選擇.sql腳本文件,點擊工具欄中的「執行」按鈕。
3.在左側的「對象資源管理器」中右鍵「資料庫」——「刷新」。完畢。
6. 請教如何編寫腳本執行SQL腳本
步驟:(1) 創建一個批處理文件:打開記事本,創建資料庫連接信息(例如,server name,username,password,databasename等)以及要執行的*.sql腳本名稱。具體語法參考下文"osql 實用工具" 。 將文件的擴展名改為.bat 並保存。
示例1:指定待執行sql 文件的相對路徑
osql -S admin\admin -U sa -P sa -d TestDB -i c:\test.sql
pause
示例2: 待執行文件與bat文件在同一個目錄,指定相對路徑
set localdir=%~dp0
osql -S (local) -U sa -P sa -d Test -i %localdir%\test1.sql
osql -S (local) -U sa -P sa -d Test -i %localdir%\test2.sql
osql -S (local) -U sa -P sa -d Test -i %localdir%\test3.sql
pause
(2) 創建需要執行的sql 腳本, test.sql,test2.sql 和test3.sql, 並放在步驟(1)示例1中指定的位置。本例為c:\ 根目錄。如果用示例2,將待執行的sql和bat文件放在同一個目錄下。
(3) 雙擊*.bat 文件並查看運行結果。
7. 如何在C 中用程序執行指定的SQL腳本文件,實
1、用cmd命令打開DOS命令行窗口
2、用sqlplus命令進入SQL命令狀態,命令行如下:c:\sqlplus/nolog
3、用如下命令連接資料庫:connect 資料庫用戶名/密碼@sid_ip,如:sql>connectionljm/ljm@ljm_localhost(本機資料庫)
4、用如下命令執行腳本文件sql>@完整路徑文件名
5、如果要導入SEQUENCE的話,可以用toad工具先生成SEQ腳本文件,再用如上命令導入
8. 如何把SQL資料庫生成腳本 SQL語句
--將表數據生成SQL腳本的存儲過程
CREATEPROCEDUREdbo.UspOutputData
@tablenamesysname
AS
declare@columnvarchar(1000)
declare@columndatavarchar(1000)
declare@sqlvarchar(4000)
declare@xtypetinyint
declare@namesysname
declare@objectIdint
declare@objectnamesysname
declare@identint
setnocounton
set@objectId=object_id(@tablename)
if@objectIdisnull--判斷對象是否存在
begin
print'Theobjectnotexists'
return
end
set@objectname=rtrim(object_name(@objectId))
if@objectnameisnullorcharindex(@objectname,@tablename)=0--此判斷不嚴密
begin
print'objectnotincurrentdatabase'
return
end
ifOBJECTPROPERTY(@objectId,'IsTable')<>1--判斷對象是否是table
begin
print'Theobjectisnottable'
return
end
select@ident=status&0x80fromsyscolumnswhereid=@objectidandstatus&0x80=0x80
if@identisnotnull
print'SETIDENTITY_INSERT'+@TableName+'ON'
declaresyscolumns_cursorcursor
forselectc.name,[email protected]
opensyscolumns_cursor
set@column=''
set@columndata=''
fetchnextfromsyscolumns_cursorinto@name,@xtype
while@@fetch_status<>-1
begin
if@@fetch_status<>-2
begin
if@xtypenotin(189,34,35,99,98)--timestamp不需處理,image,text,ntext,sql_variant暫時不處理
begin
set@column=@column+casewhenlen(@column)=0then''else','end+@name
set@columndata=@columndata+casewhenlen(@columndata)=0then''else','','','
end
+casewhen@xtypein(167,175)then'''''''''+'+@name+'+'''''''''--varchar,char
when@xtypein(231,239)then'''N''''''+'+@name+'+'''''''''--nvarchar,nchar
when@xtype=61then'''''''''+convert(char(23),'+@name+',121)+'''''''''--datetime
when@xtype=58then'''''''''+convert(char(16),'+@name+',120)+'''''''''--smalldatetime
when@xtype=36then'''''''''+convert(char(36),'+@name+')+'''''''''--uniqueidentifier
else@nameend
end
end
fetchnextfromsyscolumns_cursorinto@name,@xtype
end
closesyscolumns_cursor
deallocatesyscolumns_cursor
set@sql='setnocountonselect''insert'+@tablename+'('+@column+')values(''as''--'','+@columndata+','')''from'+@tablename
print'--'+@sql
exec(@sql)
if@identisnotnull
print'SETIDENTITY_INSERT'+@TableName+'OFF'
GO
execUspOutputData你的表名