gacutil i Newtonsoft.Json.dll
/* Microsoft SQL Server Integration Services Script Component
* Write scripts using Microsoft Visual C# 2008.
* ScriptMain is the entry point class of the script.*/
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using Newtonsoft.Json.Linq;
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
public override void PreExecute()
{
base.PreExecute();
/*
Add your code here for preprocessing or remove if not needed
*/
}
public override void PostExecute()
{
base.PostExecute();
/*
Add your code here for postprocessing or remove if not needed
You can set read/write variables here, for example:
Variables.MyIntVar = 100
*/
}
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
/*
Add your code here
*/
var blobLength = Convert.ToInt32(Row.jsonlog.Length);
var blobData = Row.jsonlog.GetBlobData(0, blobLength);
var json = System.Text.Encoding.Unicode.GetString(blobData);
//System.Windows.Forms.MessageBox.Show(json);
JObject obj = JObject.Parse(json);
Output1Buffer.AddRow();
foreach (var pair in obj)
{
switch (pair.Key)
{
case "cnsm_tp":
Output1Buffer.cnsmtp = int.Parse(pair.Value.ToString());
break;
case "a":
Output1Buffer.a = pair.Value.ToString();
break;
}
}
}
public override void CreateNewOutputRows()
{
/*
Add rows by calling the AddRow method on the member variable named "<Output Name>Buffer".
For example, call MyOutputBuffer.AddRow() if your output was named "MyOutput".
*/
}
}
語襴
json schema
谿語^
- System.Web.Extensions
- Microsoft.CSharp
#region Help: Introduction to the Script Component
/* The Script Component allows you to perform virtually any operation that can be accomplished in
* a .Net application within the context of an Integration Services data flow.
*
* Expand the other regions which have "Help" prefixes for examples of specific ways to use
* Integration Services features within this script component. */
#endregion
#region Namespaces
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using System.Web.Script.Serialization; //豢螳
using Microsoft.CSharp; //豢螳
#endregion
/// <summary>
/// This is the class to which to add your code. Do not change the name, attributes, or parent
/// of this class.
/// </summary>
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
#region Help: Using Integration Services variables and parameters
/* To use a variable in this script, first ensure that the variable has been added to
* either the list contained in the ReadOnlyVariables property or the list contained in
* the ReadWriteVariables property of this script component, according to whether or not your
* code needs to write into the variable. To do so, save this script, close this instance of
* Visual Studio, and update the ReadOnlyVariables and ReadWriteVariables properties in the
* Script Transformation Editor window.
* To use a parameter in this script, follow the same steps. Parameters are always read-only.
*
* Example of reading from a variable or parameter:
* DateTime startTime = Variables.MyStartTime;
*
* Example of writing to a variable:
* Variables.myStringVariable = "new value";
*/
#endregion
#region Help: Using Integration Services Connnection Managers
/* Some types of connection managers can be used in this script component. See the help topic
* "Working with Connection Managers Programatically" for details.
*
* To use a connection manager in this script, first ensure that the connection manager has
* been added to either the list of connection managers on the Connection Managers page of the
* script component editor. To add the connection manager, save this script, close this instance of
* Visual Studio, and add the Connection Manager to the list.
*
* If the component needs to hold a connection open while processing rows, override the
* AcquireConnections and ReleaseConnections methods.
*
* Example of using an ADO.Net connection manager to acquire a SqlConnection:
* object rawConnection = Connections.SalesDB.AcquireConnection(transaction);
* SqlConnection salesDBConn = (SqlConnection)rawConnection;
*
* Example of using a File connection manager to acquire a file path:
* object rawConnection = Connections.Prices_zip.AcquireConnection(transaction);
* string filePath = (string)rawConnection;
*
* Example of releasing a connection manager:
* Connections.SalesDB.ReleaseConnection(rawConnection);
*/
#endregion
#region Help: Firing Integration Services Events
/* This script component can fire events.
*
* Example of firing an error event:
* ComponentMetaData.FireError(10, "Process Values", "Bad value", "", 0, out cancel);
*
* Example of firing an information event:
* ComponentMetaData.FireInformation(10, "Process Values", "Processing has started", "", 0, fireAgain);
*
* Example of firing a warning event:
* ComponentMetaData.FireWarning(10, "Process Values", "No rows were received", "", 0);
*/
#endregion
/// <summary>
/// This method is called once, before rows begin to be processed in the data flow.
///
/// You can remove this method if you don't need to do anything here.
/// </summary>
public override void PreExecute()
{
base.PreExecute();
/*
* Add your code here
*/
}
/// <summary>
/// This method is called after all the rows have passed through this component.
///
/// You can delete this method if you don't need to do anything here.
/// </summary>
public override void PostExecute()
{
base.PostExecute();
/*
* Add your code here
*/
}
/// <summary>
/// This method is called once for every row that passes through the component from 0.
///
/// Example of reading a value from a column in the the row:
/// string zipCode = Row.ZipCode
///
/// Example of writing a value to a column in the row:
/// Row.ZipCode = zipCode
/// </summary>
/// <param name="Row">The row that is currently passing through the component</param>
public override void 0_ProcessInputRow(0Buffer Row)
{
/*
* Add your code here
*/
var jss = new JavaScriptSerializer();
var data = jss.Deserialize<dynamic>(Row.json);
if (data["family"].ContainsKey("father"))
System.Windows.Forms.MessageBox.Show(data["family"]["father"]);
/*
if (data.ContainsKey("p_key")) Row.pkey = Int64.Parse(data["p_key"].ToString());
Row.playenddate = Convert.ToDateTime(data["play_end_date"].ToString());
Row.speeditemyn = Convert.ToBoolean(int.Parse(data["speed_item_yn"].ToString()));
Row.plusexp = int.Parse(data["plus_exp"].ToString());
Row.hands = data["hands"].ToString();
string s = (string)data["hands"];
string[] hands = s.Split(',');
Int64 s_key = Int64.Parse(data["s_key"]);
foreach (string word in hands)
{
handsBuffer.AddRow();
handsBuffer.skey = s_key;
handsBuffer.card = word;
}
*/
}
}
select
'Row.' + replace(column_name, '_', '') + ' = ' +
case
when data_type = 'varchar' then '(string)' + 'data["' + column_name + '"];'
when data_type = 'int' then 'int.Parse(' + 'data["' + column_name + '"]);'
when data_type = 'bigint' then 'Int64.Parse(' + 'data["' + column_name + '"]);'
when data_type = 'smallint' then 'Int16.Parse(' + 'data["' + column_name + '"]);'
when data_type = 'tinyint' then 'Convert.ToByte(' + 'data["' + column_name + '"]);'
when data_type = 'bit' then 'Convert.ToBoolean(int.Parse(' + 'data["' + column_name + '"]));'
when data_type = 'datetime' then 'Convert.ToDateTime(' + 'data["' + column_name + '"]);'
end
, *
from information_schema.columns
where table_name = 'room_instance_inout_history'
and column_name not in ('reg_dt', 'std_dt')
/*
* Created by SharpDevelop.
* User: dwa2007
* Date: 2012-12-21
* Time: ろ 4:04
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using Newtonsoft.Json.Linq;
namespace json
{
class Program
{
public static void Main(string[] args)
{
string json = @"{
""企"": ""ろ"",
"""": 25,
""焔"": """",
""蠍壱"": true,
""譯殊"": ""誤豪 豌蟲 覈"",
""濠鍵"": [""蟲"", """"],
""螳譟炎螻"": {""#"": 2, ""覯讌"": """", ""企┯"": ""豢""},
"""": ""蟆所鍵 襷蟲 7""
}";
//Newtonsoft.Json.
JObject obj = JObject.Parse(json);
string name = (string)obj["企"];
int age = (int)obj[""];
string gender = (string)obj["焔"];
//Type
Console.WriteLine(obj["濠鍵"].Type);
Console.WriteLine(obj["螳譟炎螻"].Type);
//Array
JArray specialty = (JArray)obj["濠鍵"];
string specialty1 = (string)specialty[0];
string specialty2 = (string)specialty[1];
//Object
JObject obj_family = JObject.Parse(obj["螳譟炎螻"].ToString());
int family_cnt = (int)obj_family["#"];
Console.WriteLine("企= {0}, ={1}, 焔={2}, 濠鍵={3}, 螳譟煙={4}", name, age, gender, specialty1, family_cnt);
// TODO: Implement Functionality Here
string dt = "2013-01-22 10:17:25.917";
Console.WriteLine(Convert.ToDateTime(dt));
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
ssis 2008 r2 version(.net framework 3.5)
/* Microsoft SQL Server Integration Services Script Component
* Write scripts using Microsoft Visual C# 2008.
* ScriptMain is the entry point class of the script.*/
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using System.Web.Script.Serialization; //豢螳
using System.Collections.Generic; //豢螳
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
public override void PreExecute()
{
base.PreExecute();
/*
Add your code here for preprocessing or remove if not needed
*/
}
public override void PostExecute()
{
base.PostExecute();
/*
Add your code here for postprocessing or remove if not needed
You can set read/write variables here, for example:
Variables.MyIntVar = 100
*/
}
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
/*
Add your code here
*/
//Row.jsonlog 一危 NTEXT 蟆曙 blob -> string朱 覦蠖譴 .
var blobLength = Convert.ToInt32(Row.jsonlog.Length);
var blobData = Row.jsonlog.GetBlobData(0, blobLength);
var json = System.Text.Encoding.Unicode.GetString(blobData);
var jss = new JavaScriptSerializer();
var data = jss.Deserialize<Dictionary<string, string>>(json);
Output1Buffer.AddRow();
if (data.ContainsKey("mbid")) Output1Buffer.mbid = int.Parse(data["mbid"].ToString());
}
public override void CreateNewOutputRows()
{
/*
Add rows by calling the AddRow method on the member variable named "<Output Name>Buffer".
For example, call MyOutputBuffer.AddRow() if your output was named "MyOutput".
*/
}
}
NT_TEXT to string
var blobLength = Convert.ToInt32(blobColumn.Length);
var blobData = blobColumn.GetBlobData(0, blobLength);
var stringData = Encoding.Unicode.GetString(blobData);
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using Newtonsoft.Json.Linq;
public override void 0_ProcessInputRow(0Buffer Row)
{
/*
* Add your code here
*/
//Blob To String
var blobLength = Convert.ToInt32(Row.pcdata.Length);
var blobData = Row.pcdata.GetBlobData(0, blobLength);
var json = System.Text.Encoding.Unicode.GetString(blobData);
//System.Windows.Forms.MessageBox.Show(json);
JObject data = JObject.Parse(json);
JArray preset_array = (JArray)data["Preset"];
//Output1Buffer.AddRow();
foreach (JObject pair in preset_array)
{
if (pair.ContainsKey("Tier"))
{
JArray tier_array = (JArray)pair["Tier"];
foreach (JObject arr in tier_array)
{
Output1Buffer.AddRow();
if (pair.ContainsKey("Id")) Output1Buffer.id = (int)pair["Id"];
if (pair.ContainsKey("Option")) Output1Buffer.option = pair["Option"].ToString(Newtonsoft.Json.Formatting.None);
Output1Buffer.datekey = Row.datekey;
}
}
}