Code:Class1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SC_af3cbb89085a40ddbb0482d524d4e620.Properties
public class CarSale
public string Car_id { get; set; }
public long Date { get; set; } // Unix timestamp (milliseconds)
public string Customer_Name { get; set; }
public string Gender { get; set; }
public long Annual_Income { get; set; }
public string Dealer_Name { get; set; }
public string Company { get; set; }
public string Model { get; set; }
public string Engine { get; set; }
public string Transmission { get; set; }
public string Color { get; set; }
public double Price { get; set; }
public string Dealer_No { get; set; } // Bỏ dấu cách ở cuối
public string Body_Style { get; set; }
public double Phone { get; set; }
public string Dealer_Region { get; set; }
Main.css
#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.IO;
using System;
using System.Collections.Generic;
using System.Data;
using System.Web.Script.Serialization;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using SC_af3cbb89085a40ddbb0482d524d4e620.Properties;
#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
*/
public override void CreateNewOutputRows()
try
{
// Đọc file JSON từ đường dẫn
string jsonFileContent = File.ReadAllText(@"C:\Users\nguye\OneDrive\
Desktop\Newfolder\new_car_sales.json");
Console.WriteLine(jsonFileContent);
// Chuyển đổi JSON thành danh sách đối tượng
JavaScriptSerializer js = new JavaScriptSerializer();
js.MaxJsonLength = Int32.MaxValue; // Cho phép JSON có độ dài tối
đa
List<CarSale> carSales =
js.Deserialize<List<CarSale>>(jsonFileContent);
foreach (CarSale sale in carSales)
Output0Buffer.AddRow();
Output0Buffer.Carid = sale.Car_id;
Output0Buffer.CustomerName = sale.Customer_Name;
Output0Buffer.Gender = sale.Gender;
Output0Buffer.Company = sale.Company;
Output0Buffer.Model = sale.Model;
Output0Buffer.Engine = sale.Engine;
Output0Buffer.Transmission = sale.Transmission;
Output0Buffer.Color = sale.Color;
Output0Buffer.Price = (double)sale.Price;
Output0Buffer.DealerNo = sale.Dealer_No;
Output0Buffer.BodyStyle = sale.Body_Style;
Output0Buffer.Phone = (double)sale.Phone;
Output0Buffer.DealerRegion = sale.Dealer_Region;
Output0Buffer.DealerName = sale.Dealer_Name;
Output0Buffer.AnnualIncome = sale.Annual_Income;
// Chuyển đổi timestamp thành DateTime
Output0Buffer.Date = ConvertFromUnixTimestamp(sale.Date);
catch (Exception ex)
Console.WriteLine("Lỗi: " + ex.ToString());
throw; // Để SSIS báo lỗi thay vì bỏ qua
// Hàm chuyển đổi Unix Timestamp (milliseconds) sang DateTime
private DateTime ConvertFromUnixTimestamp(long timestamp)
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0,
DateTimeKind.Utc);
return origin.AddMilliseconds(timestamp).ToLocalTime().Date; // Chỉ lấy
ngày (không có giờ)