我有一排結構看起來像ID BIGINT,ScanRept XMLSQL Server 2005 - 將XML字段獲取到文件中;一些XML領域到他們自己的文件
我想只包含從ScanRept列的XML文件名爲4.XML清盤,其中ID號4.
我不想做交互(通過進入經理工作室,發現該行,右鍵單擊該領域,做另存爲) - 這就是如果我想不通我會做一個更好的方法。
我有可用的C#;如果這對於sqlcmd是可行的,那是我的偏好(因爲現在可能會有很多變化,我現在無法預料)。
我有一排結構看起來像ID BIGINT,ScanRept XMLSQL Server 2005 - 將XML字段獲取到文件中;一些XML領域到他們自己的文件
我想只包含從ScanRept列的XML文件名爲4.XML清盤,其中ID號4.
我不想做交互(通過進入經理工作室,發現該行,右鍵單擊該領域,做另存爲) - 這就是如果我想不通我會做一個更好的方法。
我有可用的C#;如果這對於sqlcmd是可行的,那是我的偏好(因爲現在可能會有很多變化,我現在無法預料)。
有可能是一個更好的方式來做到這一點......但沒有測試這樣的事情可能work.C#
SqlDataAdapter adapter = new SqlDataAdapter("SELECT ID, ScanRept FROM TableName", "connString");
DataTable dt = new DataTable();
adapter.Fill(dt);
foreach (DataRow row in dt.Rows)
{
string type = row["ID"].ToString();
string location = "C\\" + type + ".xml";
string xml = row["ScanRept"].ToString();
XmlTextWriter writer = new XmlTextWriter(location, null);
writer.WriteString(xml);
writer.Flush();
writer.Close();
}
命令行的方式與bcp
:
bcp "SELECT ScanRept FROM <DBName>.dbo.<TableName> WHERE ID = 4" queryout 4.xml -c -S<ServerName> -U<UserName> -P<Password>
或可信連接
bcp "SELECT ScanRept FROM <DBName>.dbo.<TableName> WHERE ID = 4" queryout 4.xml -c -S<ServerName> -T
命令行方式sqlcmd
:
sqlcmd -U<Username> -P<Password> -S<ServerName> -h -1 -Q "SET NOCOUNT ON SELECT ScanRept FROM <DBName>.dbo.<TableName> WHERE ID = 4;" -o 4.xml
或爲
sqlcmd -E -S<ServerName> -h -1 -Q "SET NOCOUNT ON SELECT ScanRept FROM <DBName>.dbo.<TableName> WHERE ID = 4;" -o 4.xml
謝謝你都信任的連接 - 這是258個字符 - 很好的提示
帕諾斯,它一定lenght後截斷?
Toytown功不可沒,除了writer.WriteRaw()的作品是我需要的,否則它編碼的XML標記,使之有效的數據,例如,<被
到目前爲止變成符號LT分號,我可以」除了一長串xml(沒有縮進,沒有換行符)之外,沒有任何東西可以獲得。我不知道是否有一個在我的數據的任何格式的空白,但我知道,當我右鍵單擊SSMS的領域,它帶來了MS XML編輯器中顯示它的所有格式的漂亮。
嘛,就像法國人說,「這該死的XML是法國馬太玉樹痛」。您的評論都有幫助,我會在註冊這個dang open id事項後投票給您答案。
這裏的另一種方法是讓它寫出來很漂亮,一路熱獐Girlz的一樣:
string IRIXno = args[0] ;
string connectionString ;
string query = "Select ID, Report FROM Reports WHERE id =" + IRIXno;
try
{
connectionString = ConfigurationSettings.AppSettings["ConnectionString"];
}
catch
{
Console.WriteLine("YOur connection string isn't set or something.");
return;
}
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
SqlCommand sqlComm = new SqlCommand(query, conn);
sqlComm.CommandType = CommandType.Text;
SqlDataReader reader = sqlComm.ExecuteReader();
reader.Read(); // one and only row
XmlDocument doc = new XmlDocument();
XmlReader xmlReader = reader.GetSqlXml(1).CreateReader() ;//second column is our guy
doc.Load(xmlReader);
string outfile = "H:\\" + IRIXno + ".xml";
doc.Save(outfile) ;