Browse Source

Update

master
nelson.kai 2 years ago
parent
commit
3842934b01
  1. BIN
      .vs/ExportDataToFile/v16/.suo
  2. 15
      App.config
  3. 10
      ExportDataToFile.csproj
  4. 164
      Form1.Designer.cs
  5. 546
      Form1.cs
  6. 1
      packages.config

BIN
.vs/ExportDataToFile/v16/.suo

15
App.config

@ -1,13 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.21.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<appSettings>
<!-- 系統預設錯誤Log路徑 -->
<add key="ErrorFilePath" value=".\Logs\ErrorLog\" />
</appSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
@ -27,6 +28,16 @@
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" />
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.21.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
</configuration>

10
ExportDataToFile.csproj

@ -56,6 +56,9 @@
<Reference Include="Npgsql, Version=7.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7, processorArchitecture=MSIL">
<HintPath>packages\Npgsql.7.0.0\lib\netstandard2.0\Npgsql.dll</HintPath>
</Reference>
<Reference Include="Oracle.ManagedDataAccess, Version=4.122.21.1, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=MSIL">
<HintPath>packages\Oracle.ManagedDataAccess.21.8.0\lib\net462\Oracle.ManagedDataAccess.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
@ -126,6 +129,7 @@
<DependentUpon>ShowForm.cs</DependentUpon>
</Compile>
<Compile Include="Utility\ErrorHandler.cs" />
<Compile Include="Utility\OracleUtilityClass.cs" />
<Compile Include="Utility\MySQLUtilityClass.cs" />
<Compile Include="Utility\MSSQLUtilityClass.cs" />
<Compile Include="Utility\PostgreSQLUtilityClass.cs" />
@ -148,6 +152,12 @@
<EmbeddedResource Include="ShowForm.resx">
<DependentUpon>ShowForm.cs</DependentUpon>
</EmbeddedResource>
<None Include="Oracle.DataAccess.Common.Configuration.Section.xsd">
<SubType>Designer</SubType>
</None>
<None Include="Oracle.ManagedDataAccess.Client.Configuration.Section.xsd">
<SubType>Designer</SubType>
</None>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>

164
Form1.Designer.cs

@ -55,6 +55,14 @@ namespace ExportDataToFile
this.txtSourcePWD = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.dgvExportList = new System.Windows.Forms.DataGridView();
this.clExport = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.clCancel = new System.Windows.Forms.DataGridViewButtonColumn();
this.clShow = new System.Windows.Forms.DataGridViewButtonColumn();
this.clSourceTable = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.clTargetTable = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.clTableDel = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.clWhere = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.clMappingData = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.label11 = new System.Windows.Forms.Label();
this.dgvColumnMapping = new System.Windows.Forms.DataGridView();
this.clExpColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn();
@ -78,14 +86,6 @@ namespace ExportDataToFile
this.btnImportXML = new System.Windows.Forms.Button();
this.ofPath = new System.Windows.Forms.OpenFileDialog();
this.btnClean = new System.Windows.Forms.Button();
this.clExport = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.clCancel = new System.Windows.Forms.DataGridViewButtonColumn();
this.clShow = new System.Windows.Forms.DataGridViewButtonColumn();
this.clSourceTable = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.clTargetTable = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.clTableDel = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.clWhere = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.clMappingData = new System.Windows.Forms.DataGridViewTextBoxColumn();
((System.ComponentModel.ISupportInitialize)(this.dgvExportList)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dgvColumnMapping)).BeginInit();
this.SuspendLayout();
@ -97,6 +97,7 @@ namespace ExportDataToFile
this.txtTargetID.Name = "txtTargetID";
this.txtTargetID.Size = new System.Drawing.Size(135, 29);
this.txtTargetID.TabIndex = 11;
this.txtTargetID.Text = "origtek";
//
// label7
//
@ -115,6 +116,7 @@ namespace ExportDataToFile
this.txtTargetDBName.Name = "txtTargetDBName";
this.txtTargetDBName.Size = new System.Drawing.Size(135, 29);
this.txtTargetDBName.TabIndex = 10;
this.txtTargetDBName.Text = "origtekpdb";
//
// label8
//
@ -133,6 +135,7 @@ namespace ExportDataToFile
this.txtTargetIP.Name = "txtTargetIP";
this.txtTargetIP.Size = new System.Drawing.Size(135, 29);
this.txtTargetIP.TabIndex = 8;
this.txtTargetIP.Text = "192.168.1.76";
//
// label9
//
@ -177,6 +180,7 @@ namespace ExportDataToFile
this.txtSourceID.Name = "txtSourceID";
this.txtSourceID.Size = new System.Drawing.Size(135, 29);
this.txtSourceID.TabIndex = 5;
this.txtSourceID.Text = "origtek";
//
// label4
//
@ -195,6 +199,7 @@ namespace ExportDataToFile
this.txtSourceDBName.Name = "txtSourceDBName";
this.txtSourceDBName.Size = new System.Drawing.Size(135, 29);
this.txtSourceDBName.TabIndex = 4;
this.txtSourceDBName.Text = "origtekpdb";
//
// label3
//
@ -213,6 +218,7 @@ namespace ExportDataToFile
this.txtSourceIP.Name = "txtSourceIP";
this.txtSourceIP.Size = new System.Drawing.Size(135, 29);
this.txtSourceIP.TabIndex = 2;
this.txtSourceIP.Text = "192.168.1.76";
//
// label2
//
@ -292,6 +298,7 @@ namespace ExportDataToFile
this.txtTargetPWD.PasswordChar = '*';
this.txtTargetPWD.Size = new System.Drawing.Size(135, 29);
this.txtTargetPWD.TabIndex = 12;
this.txtTargetPWD.Text = "!QAZ2wsx";
//
// label6
//
@ -322,6 +329,7 @@ namespace ExportDataToFile
this.txtSourcePWD.PasswordChar = '*';
this.txtSourcePWD.Size = new System.Drawing.Size(135, 29);
this.txtSourcePWD.TabIndex = 6;
this.txtSourcePWD.Text = "!QAZ2wsx";
//
// label5
//
@ -359,6 +367,76 @@ namespace ExportDataToFile
this.dgvExportList.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvExportList_CellClick);
this.dgvExportList.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvExportList_CellContentClick);
//
// clExport
//
this.clExport.FalseValue = "false";
this.clExport.Frozen = true;
this.clExport.HeaderText = "匯出";
this.clExport.IndeterminateValue = "false";
this.clExport.Name = "clExport";
this.clExport.ReadOnly = true;
this.clExport.TrueValue = "true";
this.clExport.Width = 55;
//
// clCancel
//
this.clCancel.Frozen = true;
this.clCancel.HeaderText = "清除";
this.clCancel.Name = "clCancel";
this.clCancel.Text = "...";
this.clCancel.Width = 55;
//
// clShow
//
this.clShow.Frozen = true;
this.clShow.HeaderText = "顯示來源";
this.clShow.Name = "clShow";
this.clShow.Text = "...";
this.clShow.Width = 80;
//
// clSourceTable
//
this.clSourceTable.DataPropertyName = "TableName";
this.clSourceTable.Frozen = true;
this.clSourceTable.HeaderText = "來源資料表名稱";
this.clSourceTable.Name = "clSourceTable";
this.clSourceTable.ReadOnly = true;
this.clSourceTable.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.clSourceTable.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
this.clSourceTable.Width = 300;
//
// clTargetTable
//
this.clTargetTable.Frozen = true;
this.clTargetTable.HeaderText = "目標資料表名稱";
this.clTargetTable.Name = "clTargetTable";
this.clTargetTable.ReadOnly = true;
this.clTargetTable.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.clTargetTable.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
this.clTargetTable.Width = 300;
//
// clTableDel
//
this.clTableDel.Frozen = true;
this.clTableDel.HeaderText = "清除目標資料表內容";
this.clTableDel.Name = "clTableDel";
this.clTableDel.Width = 180;
//
// clWhere
//
this.clWhere.Frozen = true;
this.clWhere.HeaderText = "過濾條件";
this.clWhere.Name = "clWhere";
this.clWhere.Visible = false;
this.clWhere.Width = 200;
//
// clMappingData
//
this.clMappingData.Frozen = true;
this.clMappingData.HeaderText = "欄位對應";
this.clMappingData.Name = "clMappingData";
this.clMappingData.Visible = false;
//
// label11
//
this.label11.AutoSize = true;
@ -581,76 +659,6 @@ namespace ExportDataToFile
this.btnClean.UseVisualStyleBackColor = true;
this.btnClean.Click += new System.EventHandler(this.btnClean_Click);
//
// clExport
//
this.clExport.FalseValue = "false";
this.clExport.Frozen = true;
this.clExport.HeaderText = "匯出";
this.clExport.IndeterminateValue = "false";
this.clExport.Name = "clExport";
this.clExport.ReadOnly = true;
this.clExport.TrueValue = "true";
this.clExport.Width = 55;
//
// clCancel
//
this.clCancel.Frozen = true;
this.clCancel.HeaderText = "清除";
this.clCancel.Name = "clCancel";
this.clCancel.Text = "...";
this.clCancel.Width = 55;
//
// clShow
//
this.clShow.Frozen = true;
this.clShow.HeaderText = "顯示來源";
this.clShow.Name = "clShow";
this.clShow.Text = "...";
this.clShow.Width = 80;
//
// clSourceTable
//
this.clSourceTable.DataPropertyName = "TableName";
this.clSourceTable.Frozen = true;
this.clSourceTable.HeaderText = "來源資料表名稱";
this.clSourceTable.Name = "clSourceTable";
this.clSourceTable.ReadOnly = true;
this.clSourceTable.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.clSourceTable.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
this.clSourceTable.Width = 300;
//
// clTargetTable
//
this.clTargetTable.Frozen = true;
this.clTargetTable.HeaderText = "目標資料表名稱";
this.clTargetTable.Name = "clTargetTable";
this.clTargetTable.ReadOnly = true;
this.clTargetTable.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.clTargetTable.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
this.clTargetTable.Width = 300;
//
// clTableDel
//
this.clTableDel.Frozen = true;
this.clTableDel.HeaderText = "清除目標資料表內容";
this.clTableDel.Name = "clTableDel";
this.clTableDel.Width = 180;
//
// clWhere
//
this.clWhere.Frozen = true;
this.clWhere.HeaderText = "過濾條件";
this.clWhere.Name = "clWhere";
this.clWhere.Visible = false;
this.clWhere.Width = 200;
//
// clMappingData
//
this.clMappingData.Frozen = true;
this.clMappingData.HeaderText = "欄位對應";
this.clMappingData.Name = "clMappingData";
this.clMappingData.Visible = false;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 20F);

546
Form1.cs

@ -12,6 +12,7 @@ using System.Threading.Tasks;
using System.Windows.Forms;
using Npgsql;
using MySqlConnector;
using Oracle.ManagedDataAccess.Client;
using ManagementSystem.Utility;
namespace ExportDataToFile
@ -26,14 +27,17 @@ namespace ExportDataToFile
string strTargetClass = "";
//MS-SQL
SqlConnection sqlMSSourceConn = new SqlConnection();
SqlConnection sqlMSTargetConn = new SqlConnection();
SqlConnection sqlMSSourceConn = null; //new SqlConnection();
SqlConnection sqlMSTargetConn = null; //new SqlConnection();
//PostgreSQL
NpgsqlConnection sqlPsgSourceConn = new NpgsqlConnection();
NpgsqlConnection sqlPsgTargetConn = new NpgsqlConnection();
NpgsqlConnection sqlPsgSourceConn = null; //new NpgsqlConnection();
NpgsqlConnection sqlPsgTargetConn = null; //new NpgsqlConnection();
//MySQL
MySqlConnection sqlMySourceConn = new MySqlConnection();
MySqlConnection sqlMyTargetConn = new MySqlConnection();
MySqlConnection sqlMySourceConn = null; //new MySqlConnection();
MySqlConnection sqlMyTargetConn = null; //new MySqlConnection();
//Oracle
OracleConnection sqlOraSourceConn = null; //new OracleConnection();
OracleConnection sqlOraTargetConn = null; //new OracleConnection();
public Form1()
{
@ -67,6 +71,10 @@ namespace ExportDataToFile
switch (cbSourceClass.SelectedItem.ToString().Trim())
{
case "MS-SQL":
//MS-SQL
sqlMSSourceConn = new SqlConnection();
sqlMSTargetConn = new SqlConnection();
sqlMSSourceConn = MSSQLUtility.GetConn(strIP, strDBName, strID, strPWD, strPort);
if (sqlMSSourceConn == null)
{
@ -77,6 +85,10 @@ namespace ExportDataToFile
Application.DoEvents();
break;
case "MySQL":
//MySQL
sqlMySourceConn = new MySqlConnection();
sqlMyTargetConn = new MySqlConnection();
sqlMySourceConn = MySQLUtility.GetConn(strIP, strDBName, strID, strPWD, strPort);
if (sqlMySourceConn == null)
{
@ -88,10 +100,25 @@ namespace ExportDataToFile
Application.DoEvents();
break;
case "Oracle":
//Oracle
sqlOraSourceConn = new OracleConnection();
sqlOraTargetConn = new OracleConnection();
sqlOraSourceConn = OracleUtility.GetConn(strIP, strDBName, strID, strPWD, strPort);
if (sqlOraSourceConn == null)
{
MessageBox.Show("連線失敗,請查詢連線資訊");
}
dtResult = ShowOracleTableList(sqlOraSourceConn, strDBName);
strSourceClass = "Oracle";
Application.DoEvents();
break;
case "PostgreSQL":
//PostgreSQL
sqlPsgSourceConn = new NpgsqlConnection();
sqlPsgTargetConn = new NpgsqlConnection();
sqlPsgSourceConn = PostgreSQLUtility.GetConn(strIP, strDBName, strID, strPWD, strPort);
if (sqlPsgSourceConn == null)
{
@ -157,6 +184,8 @@ namespace ExportDataToFile
Application.DoEvents();
break;
case "Oracle":
sqlOraTargetConn = OracleUtility.GetConn(strIP, strDBName, strID, strPWD, strPort);
dtResult = ShowOracleTableList(sqlOraTargetConn, strDBName);
strTargetClass = "Oracle";
Application.DoEvents();
break;
@ -167,7 +196,6 @@ namespace ExportDataToFile
break;
}
//cbTargetTable.ValueMember = "name";
cbTargetTable.DataSource = dtResult;
cbTargetTable.SelectedIndex = -1;
blTargetConnStatus = true;
@ -177,6 +205,7 @@ namespace ExportDataToFile
else
{
UnLockTargetForm();
Form1_FormClosing(null,null);
}
}
else
@ -253,7 +282,8 @@ namespace ExportDataToFile
this.clTargetColumn.DisplayMember = "Field";
break;
case "Oracle":
dtResult = ShowOracleColumnList(sqlOraTargetConn, cbTargetTable.SelectedValue.ToString());
this.clTargetColumn.DisplayMember = "COLUMN_NAME";
break;
case "PostgreSQL":
dtResult = ShowPostgreSQLColumnList(sqlPsgTargetConn, cbTargetTable.SelectedValue.ToString());
@ -314,7 +344,7 @@ namespace ExportDataToFile
ExportToMySQLData(sfPath.FileName, sfPath.DefaultExt);
break;
case "Oracle":
ExportToOracleData(sfPath.FileName, sfPath.DefaultExt);
break;
case "PostgreSQL":
ExportToPostgreSQLData(sfPath.FileName, sfPath.DefaultExt);
@ -332,20 +362,25 @@ namespace ExportDataToFile
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
//MS-SQL
sqlMSSourceConn.Close();
//sqlMSSourceConn.Close();
sqlMSSourceConn = null;
sqlMSTargetConn.Close();
//sqlMSTargetConn.Close();
sqlMSTargetConn = null;
//PostgreSQL
sqlPsgSourceConn.Close();
//sqlPsgSourceConn.Close();
sqlPsgSourceConn = null;
sqlPsgTargetConn.Close();
//sqlPsgTargetConn.Close();
sqlPsgTargetConn = null;
//MySQL
sqlMySourceConn.Close();
//sqlMySourceConn.Close();
sqlMySourceConn = null;
sqlMyTargetConn.Close();
//sqlMyTargetConn.Close();
sqlMyTargetConn = null;
//Oracle
//sqlOraSourceConn.Close();
sqlOraSourceConn = null;
//sqlOraTargetConn.Close();
sqlOraTargetConn = null;
}
private void btnMapping_Click(object sender, EventArgs e)
@ -566,16 +601,24 @@ namespace ExportDataToFile
cbTargetTable.SelectedIndex = -1;
cbTargetTable.Enabled = false;
//dgvExportList.DataSource = null;
//dgvExportList.Refresh();
//dgvColumnMapping.DataSource = null;
//dgvColumnMapping.Refresh();
sqlMSSourceConn.Close();
sqlMSTargetConn.Close();
sqlPsgSourceConn.Close();
sqlPsgTargetConn.Close();
sqlMySourceConn.Close();
sqlMyTargetConn.Close();
//sqlMSSourceConn.Close();
//sqlMSTargetConn.Close();
//sqlPsgSourceConn.Close();
//sqlPsgTargetConn.Close();
//sqlMySourceConn.Close();
//sqlMyTargetConn.Close();
//sqlOraSourceConn.Close();
//sqlOraTargetConn.Close();
sqlMSSourceConn = null;
sqlMSTargetConn = null;
sqlPsgSourceConn = null;
sqlPsgTargetConn = null;
sqlMySourceConn = null;
sqlMyTargetConn = null;
sqlOraSourceConn = null;
sqlOraTargetConn = null;
btnImportXML.Enabled = true;
btnExportXML.Enabled = false;
btnExport.Enabled = false;
@ -745,6 +788,7 @@ namespace ExportDataToFile
dtResult = GetMySQLResult(strSelectCommand, sqlMySourceConn).Tables["Result"];
break;
case "Oracle":
dtResult = GetOracleResult(strSelectCommand, sqlOraSourceConn).Tables["Result"];
break;
case "PostgreSQL":
dtResult = GetPostgreSQLResult(strSelectCommand.ToString(), sqlPsgSourceConn).Tables["Result"];
@ -768,7 +812,6 @@ namespace ExportDataToFile
{
//無設定最大筆數
Utility.WriteFile(strPath + ".sql", string.Format("/*======================================================={0}======================================================*/", strTargetTable));
Utility.WriteFile(strPath + ".sql", string.Format("raiserror('Now Insert {0} Datas .... ', 1, 1)", strTargetTable));
Utility.WriteFile(strPath + ".sql", "Go");
Utility.WriteFile(strPath + ".sql", " ");
}
@ -779,7 +822,6 @@ namespace ExportDataToFile
strFileCount = "";
Utility.WriteFile(strPath + strFileCount + ".sql", string.Format("/*======================================================={0}======================================================*/", strTargetTable));
Utility.WriteFile(strPath + strFileCount + ".sql", string.Format("raiserror('Now Insert {0} Datas .... ', 1, 1)", strTargetTable));
Utility.WriteFile(strPath + strFileCount + ".sql", "Go");
Utility.WriteFile(strPath + strFileCount + ".sql", " ");
}
@ -822,11 +864,28 @@ namespace ExportDataToFile
{
if (strValues == "")
{
switch (dc.DataType.ToString().ToUpper())
{
case "SYSTEM.DATETIME":
strValues = ConvertMSSQLDataType(DateTime.Parse(dr[dc].ToString()), dc.DataType.ToString());
break;
default:
strValues = ConvertMSSQLDataType(dr[dc].ToString().Trim(), dc.DataType.ToString());
break;
}
}
else
{
switch (dc.DataType.ToString().ToUpper())
{
case "SYSTEM.DATETIME":
strValues += "," + ConvertMSSQLDataType(DateTime.Parse(dr[dc].ToString()), dc.DataType.ToString());
break;
default:
strValues += "," + ConvertMSSQLDataType(dr[dc].ToString().Trim(), dc.DataType.ToString());
break;
}
}
}
@ -895,6 +954,7 @@ namespace ExportDataToFile
return "[" + strSourceCol + "] AS " + strTargetCol;
case "DATETIME":
return "Convert(varchar,[" + strSourceCol + "],21) AS " + strTargetCol;
//return "[" + strSourceCol + "] AS " + strTargetCol;
default:
return "[" + strSourceCol + "] AS " + strTargetCol;
}
@ -918,6 +978,11 @@ namespace ExportDataToFile
return "'" + strData.ToString().Trim() + "'";
}
}
private string ConvertMSSQLDataType(DateTime dtData, string strType)
{
return "'" + dtData.ToString("yyyy-MM-dd HH:mm:ss") + "'";
}
#endregion //End of MS-SQL
#region PostgreSQL
@ -1057,6 +1122,7 @@ namespace ExportDataToFile
dtResult = GetMySQLResult(strSelectCommand, sqlMySourceConn).Tables["Result"];
break;
case "Oracle":
dtResult = GetOracleResult(strSelectCommand, sqlOraSourceConn).Tables["Result"];
break;
case "PostgreSQL":
dtResult = GetPostgreSQLResult(strSelectCommand.ToString(), sqlPsgSourceConn).Tables["Result"];
@ -1081,7 +1147,6 @@ namespace ExportDataToFile
{
//無設定最大筆數
Utility.WriteFile(strPath + ".sql", string.Format("/*======================================================={0}======================================================*/", strTargetTable));
Utility.WriteFile(strPath + ".sql", string.Format("raiserror('Now Insert {0} Datas .... ', 1, 1)", strTargetTable));
Utility.WriteFile(strPath + ".sql", "Go");
Utility.WriteFile(strPath + ".sql", " ");
}
@ -1092,7 +1157,6 @@ namespace ExportDataToFile
strFileCount = "";
Utility.WriteFile(strPath + strFileCount + ".sql", string.Format("/*======================================================={0}======================================================*/", strTargetTable));
Utility.WriteFile(strPath + strFileCount + ".sql", string.Format("raiserror('Now Insert {0} Datas .... ', 1, 1)", strTargetTable));
Utility.WriteFile(strPath + strFileCount + ".sql", " ");
}
}
@ -1132,11 +1196,34 @@ namespace ExportDataToFile
{
if (strValues == "")
{
switch (dc.DataType.ToString().ToUpper())
{
case "TIMESTAMP WITH TIME ZONE":
strValues = ConvertMSSQLDataType(DateTime.Parse(dr[dc].ToString()), dc.DataType.ToString());
break;
case "TIMESTAMP WITHOUT TIME ZONE":
strValues = ConvertMSSQLDataType(DateTime.Parse(dr[dc].ToString()), dc.DataType.ToString());
break;
default:
strValues = ConvertMSSQLDataType(dr[dc].ToString().Trim(), dc.DataType.ToString());
break;
}
}
else
{
switch (dc.DataType.ToString().ToUpper())
{
case "TIMESTAMP WITH TIME ZONE":
strValues += "," + ConvertMSSQLDataType(DateTime.Parse(dr[dc].ToString()), dc.DataType.ToString());
break;
case "TIMESTAMP WITHOUT TIME ZONE":
strValues += "," + ConvertMSSQLDataType(DateTime.Parse(dr[dc].ToString()), dc.DataType.ToString());
break;
default:
strValues += "," + ConvertMSSQLDataType(dr[dc].ToString().Trim(), dc.DataType.ToString());
break;
}
}
}
@ -1193,10 +1280,10 @@ namespace ExportDataToFile
return strSourceCol + " AS " + strTargetCol;
case "INTEGER":
return strSourceCol + " AS " + strTargetCol;
case "TIMESTAMP WITH TIME ZONE":
return "to_char(" + strSourceCol + ", 'yyyy-MM-dd hh24:mm:ss')";
case "TIMESTAMP WITHOUT TIME ZONE":
return "to_char(" + strSourceCol + ", 'yyyy-MM-dd hh24:mm:ss')";
//case "TIMESTAMP WITH TIME ZONE":
// return "to_char(" + strSourceCol + ", 'yyyy-MM-dd hh24:mm:ss')";
//case "TIMESTAMP WITHOUT TIME ZONE":
// return "to_char(" + strSourceCol + ", 'yyyy-MM-dd hh24:mm:ss')";
default:
return strSourceCol + " AS " + strTargetCol;
@ -1215,8 +1302,8 @@ namespace ExportDataToFile
return "'" + strData.ToString().Replace("'","''").Trim() + "'";
case "SYSTEM.INT32":
return strData.ToString().Trim();
case "SYSTEM.DATETIME":
return "'" + strData.ToString().Trim() + "'";
//case "SYSTEM.DATETIME":
//return "'" + strData.ToString().Trim() + "'";
case "SYSTEM.BOOLEAN":
return strData.ToString().Trim();
default:
@ -1224,6 +1311,11 @@ namespace ExportDataToFile
}
}
private string ConvertPostgreSQLDataType(DateTime dtData, string strType)
{
return "'" + dtData.ToString("yyyy-MM-dd HH:mm:ss") + "'";
}
#endregion //End of PostgreSQL
#region MySQL
@ -1390,6 +1482,7 @@ namespace ExportDataToFile
dtResult = GetMySQLResult(strSelectCommand, sqlMySourceConn).Tables["Result"];
break;
case "Oracle":
dtResult = GetOracleResult(strSelectCommand, sqlOraSourceConn).Tables["Result"];
break;
case "PostgreSQL":
dtResult = GetPostgreSQLResult(strSelectCommand.ToString(), sqlPsgSourceConn).Tables["Result"];
@ -1575,6 +1668,356 @@ namespace ExportDataToFile
}
#endregion //End of MySQL
#region Oracle
public DataSet GetOracleResult(string strSQL, OracleConnection conn)
{
DataSet dsData = new DataSet();
try
{
using (OracleDataAdapter sqlAdapter = new OracleDataAdapter(strSQL, conn))
{
if (conn.State == ConnectionState.Closed) //判斷連線狀態
{
conn.Open();
blSourceConnStatus = true;
}
sqlAdapter.Fill(dsData, "Result");
}
return dsData;
}
catch (Exception ex)
{
throw ex;
}
}
private DataTable ShowOracleTableList(OracleConnection sqlConn , string strDBName)
{
try
{
string strGetOracleTableList = "SELECT TABLE_NAME AS TableName FROM ALL_TABLES Where OWNER Not IN ('SYS', 'XDB', 'SYSTEM', 'CTXSYS', 'MDSYS') ";
return OracleUtility.GetSQLResult(strGetOracleTableList, sqlConn);
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("Form1.ShowOracleTableList", ex);
return null;
}
}
private DataTable ShowOracleColumnList(OracleConnection sqlConn, string strTableName)
{
try
{
string strGetOracleColumnList = "Select COLUMN_NAME,DATA_TYPE From ALL_TAB_COLUMNS Where TABLE_NAME ='" + strTableName + "' Order by COLUMN_NAME";
return OracleUtility.GetSQLResult(strGetOracleColumnList, sqlConn);
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("Form1.ShowOracleColumnList", ex);
return null;
}
}
private void ShowOracleTargetColumnList(OracleConnection sqlConn, string strTableName)
{
try
{
string strGetOracleColumnList = "Select COLUMN_NAME From ALL_TAB_COLUMNS Where TABLE_NAME ='" + strTableName + "' Order by COLUMN_NAME";
this.clTargetColumn.DisplayMember = "COLUMN_NAME";
this.clTargetColumn.DataSource = OracleUtility.GetSQLResult(strGetOracleColumnList, sqlConn);
Application.DoEvents();
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("Form1.ShowOracleTargetColumnList", ex);
}
}
private void ExportToOracleData(string strPath, string subFileName)
{
ProgressForm pgsForm = new ProgressForm();
int intDataCount = 0;
int intMaxData = 0;
int intProgress = 0;
string strGenResult = "";
string strSourceTable = "";
string strTargetColumns = "";
string strWhere = "";
string strTargetTable = "";
string strDeleteCommand = "";
string strValues = "";
string strFileCount = "";
string[] strColumns = null;
string[,] strColumnResults = new string[dgvExportList.Rows.Count, 2];
string strSelectCommand = "";
try
{
//命令字串處理
strTargetColumns = "";
//取得每個檔案最大筆數
if (Int32.Parse(txtMaxCount.Text.Trim()) > 0)
{
intMaxData = Int32.Parse(txtMaxCount.Text.Trim());
}
else
{
intMaxData = 1;
}
//取得欄位對應字串陣列
pgsForm.WindowState = FormWindowState.Normal;
pgsForm.pbExport.Minimum = 0;
pgsForm.Show();
foreach (DataGridViewRow dgvRow in dgvExportList.Rows)
{
if (dgvRow.Cells["clExport"].Value != null && (bool)dgvRow.Cells["clExport"].Value == true)
{
strSelectCommand = "";
strSourceTable = "";
strTargetColumns = "";
strDeleteCommand = "";
strValues = "";
DataTable dtResult = null;
//取得欄位對應
if (dgvRow.Cells["clMappingData"].Value != null)
{
strColumns = dgvRow.Cells["clMappingData"].Value.ToString().Split('|');
}
//取得來源Table
if (dgvRow.Cells["clSourceTable"].Value != null)
{
if (dgvRow.Cells["clSourceTable"].Value.ToString().Trim() != "")
{
strSourceTable = dgvRow.Cells["clSourceTable"].Value.ToString();
}
}
//取得目標Table
if (dgvRow.Cells["clTargetTable"].Value != null)
{
if (dgvRow.Cells["clTargetTable"].Value.ToString().Trim() != "")
{
strTargetTable = dgvRow.Cells["clTargetTable"].Value.ToString();
}
}
//取得Where條件
if (dgvRow.Cells["clWhere"].Value != null)
{
if (dgvRow.Cells["clWhere"].Value.ToString().Trim() != "")
{
strWhere = " " + dgvRow.Cells["clWhere"].Value.ToString();
}
}
#region 產生來源資料查詢命令
strGenResult = GenExpSourceCommand(strColumns, strSourceClass, strSourceTable, strWhere);
strSelectCommand = strGenResult.Substring(0, strGenResult.IndexOf('|')).Trim();
strTargetColumns = strGenResult.Substring(strGenResult.IndexOf('|') + 1).Trim();
switch (strSourceClass)
{
case "MS-SQL":
dtResult = GetMSSQLResult(strSelectCommand, sqlMSSourceConn).Tables["Result"];
break;
case "MySQL":
dtResult = GetMySQLResult(strSelectCommand, sqlMySourceConn).Tables["Result"];
break;
case "Oracle":
dtResult = GetOracleResult(strSelectCommand, sqlOraSourceConn).Tables["Result"];
break;
case "PostgreSQL":
dtResult = GetPostgreSQLResult(strSelectCommand.ToString(), sqlPsgSourceConn).Tables["Result"];
break;
}
#endregion
//產生匯出資料語法
if (dtResult.Rows.Count > 0)
{
//Progess bar
intProgress = 0;
pgsForm.pbExport.Value = 0;
pgsForm.pbExport.Maximum = dtResult.Rows.Count;
if (dgvRow.Cells["clTargetTable"].Value != null)
{
strTargetTable = dgvRow.Cells["clTargetTable"].Value.ToString();
//撰寫實體檔案
if (intMaxData == 1)
{
//無設定最大筆數
Utility.WriteFile(strPath + ".sql", string.Format("/*======================================================={0}======================================================*/", strTargetTable));
Utility.WriteFile(strPath + ".sql", " ");
}
else
{
//有設定最大筆數
if (strFileCount == "0")
strFileCount = "";
Utility.WriteFile(strPath + strFileCount + ".sql", string.Format("/*======================================================={0}======================================================*/", strTargetTable));
Utility.WriteFile(strPath + strFileCount + ".sql", " ");
}
}
//勾選清除目標資料表
if (dgvRow.Cells["clTableDel"].Value != null && Convert.ToBoolean(dgvRow.Cells["clTableDel"].Value) == false)
{
strDeleteCommand = string.Format("Delete From {0} ", strTargetTable);
if (dgvRow.Cells["clWhere"].Value != null)
{
if (dgvRow.Cells["clWhere"].Value.ToString().Trim() != "")
{
strDeleteCommand += "Where 1=1 And " + dgvRow.Cells["clWhere"].Value.ToString();
}
}
//撰寫實體檔案
if (intMaxData == 1)
{
//無設定最大筆數
Utility.WriteFile(strPath + ".sql", strDeleteCommand + ";");
}
else
{
//有設定最大筆數
if (strFileCount == "0")
strFileCount = "";
Utility.WriteFile(strPath + strFileCount + ".sql", strDeleteCommand + ";");
}
}
//處理筆數上限似資料匯出
foreach (DataRow dr in dtResult.Rows)
{
foreach (DataColumn dc in dtResult.Columns)
{
if (strValues == "")
{
switch (dc.DataType.ToString().ToUpper())
{
case "SYSTEM.DATETIME":
strValues = ConvertOracleDataType(DateTime.Parse(dr[dc].ToString()), dc.DataType.ToString());
break;
default:
strValues = ConvertOracleDataType(dr[dc].ToString().Trim(), dc.DataType.ToString());
break;
}
}
else
{
switch (dc.DataType.ToString().ToUpper())
{
case "SYSTEM.DATETIME":
strValues += "," + ConvertOracleDataType(DateTime.Parse(dr[dc].ToString()), dc.DataType.ToString());
break;
default:
strValues += "," + ConvertOracleDataType(dr[dc].ToString().Trim(), dc.DataType.ToString());
break;
}
}
}
//撰寫實體檔案
if (intMaxData == 1)
{
//無設定最大筆數
Utility.WriteFile(strPath + ".sql", string.Format("Insert Into {0} ({1}) Values ({2}) ;", strTargetTable, strTargetColumns, strValues));
}
else
{
//有設定最大筆數
if (strFileCount == "0")
strFileCount = "";
Utility.WriteFile(strPath + strFileCount + ".sql", string.Format("Insert Into {0} ({1}) Values ({2}) ;", strTargetTable, strTargetColumns, strValues));
}
intDataCount += 1;
intProgress += 1;
pgsForm.pbExport.Value = intProgress; //變化Progess的狀態
Application.DoEvents();
strFileCount = (intDataCount / intMaxData).ToString(); //切分檔案
strValues = ""; //清除已經存在的資料
}
//撰寫實體檔案
if (intMaxData != 1)
{
//有設定最大筆數
if (strFileCount == "0")
strFileCount = "";
}
}
}
}
MessageBox.Show("匯出完成");
}
catch (Exception ex)
{
MessageBox.Show("匯出失敗");
ErrorHandler.WriteErrorLog("Form1.ExportToMSSQLData", ex);
}
finally
{
pgsForm.Close();
}
}
private string ConvertOracleColumnType(string strSourceCol, string strTargetCol, string strType)
{
return strSourceCol + " AS " + strTargetCol;
//switch (strType.ToUpper())
//{
// case "VARCHAR2":
// return strSourceCol + " AS " + strTargetCol;
// case "NUMBER":
// return strSourceCol + " AS " + strTargetCol;
// case "FLOAT":
// return strSourceCol + " AS " + strTargetCol;
// case "INT":
// return strSourceCol + " AS " + strTargetCol;
// case "TIMESTAMP(0)":
// return strSourceCol + " AS " + strTargetCol;
// case "TIMESTAMP":
// return strSourceCol + " AS " + strTargetCol;
// default:
// return strSourceCol + " AS " + strTargetCol;
//}
}
private string ConvertOracleDataType(string strData, string strType)
{
if (strData == "")
{
return "Null";
}
switch (strType.ToUpper())
{
case "SYSTEM.STRING":
return "'" + strData.ToString().Trim() + "'";
case "SYSTEM.DECIMAL":
return strData.ToString().Trim();
default:
return "'" + strData.ToString().Trim() + "'";
}
}
private string ConvertOracleDataType(DateTime dtData, string strType)
{
return "TO_TIMESTAMP('" + dtData.ToString("yyyy-MM-dd HH:mm:ss") + "', 'YYYY-MM-DD HH24:MI:SS')";
}
#endregion //End of Oracle
private string CheckSource()
{
try
@ -1710,6 +2153,8 @@ namespace ExportDataToFile
{
cbTargetClass.Enabled = false;
cbTargetTable.Enabled = true;
cbTargetTable.ValueMember = "TableName";
cbTargetTable.DisplayMember = "TableName";
cbTargetTable.SelectedIndex = -1;
txtTargetIP.Enabled = false;
txtTargetPort.Enabled = false;
@ -1730,7 +2175,9 @@ namespace ExportDataToFile
{
cbTargetClass.Enabled = true;
cbTargetTable.DataSource = null;
//cbTargetTable.Enabled = false;
cbTargetTable.ValueMember = "TableName";
cbTargetTable.DisplayMember = "TableName";
cbTargetTable.Enabled = false;
txtTargetIP.Enabled = true;
txtTargetPort.Enabled = true;
txtTargetID.Enabled = true;
@ -1862,7 +2309,8 @@ namespace ExportDataToFile
Application.DoEvents();
break;
case "Oracle":
dtResult = ShowOracleColumnList(sqlOraSourceConn, strTarget.ToString());
Application.DoEvents();
break;
case "PostgreSQL":
dtResult = ShowPostgreSQLColumnList(sqlPsgSourceConn, strTarget.ToString());
@ -1950,7 +2398,7 @@ namespace ExportDataToFile
dtResult = MySQLUtility.GetTable(strTableName, 200, sqlMySourceConn);
break;
case "Oracle":
dtResult = OracleUtility.GetTable(strTableName, 200, sqlOraSourceConn);
break;
case "PostgreSQL":
dtResult = PostgreSQLUtility.GetTable(strTableName, 200, sqlPsgSourceConn);
@ -2043,7 +2491,21 @@ namespace ExportDataToFile
}
break;
case "Oracle":
if (strTargetCol == "")
{
strTargetCol = strSourceCol;
}
if (strSourceColumns == "")
{
strSourceColumns += ConvertOracleColumnType(strSourceCol, strTargetCol, strSourceType);
strTargetColumns += strTargetCol;
}
else
{
strSourceColumns += "," + ConvertOracleColumnType(strSourceCol, strTargetCol, strSourceType);
strTargetColumns += "," + strTargetCol;
}
break;
case "PostgreSQL":
if (strTargetCol == "")
@ -2092,7 +2554,15 @@ namespace ExportDataToFile
}
break;
case "Oracle":
if (strSourceTable != "")
{
strSelectCommand += string.Format("Select {0} From {1} ", strSourceColumns, strSourceTable);
}
if (strWhere.Trim() != "")
{
strSelectCommand += "Where 1=1 And " + strWhere.Trim();
}
break;
case "PostgreSQL":
if (strSourceTable != "")

1
packages.config

@ -7,6 +7,7 @@
<package id="MySqlConnector" version="2.2.1" targetFramework="net472" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net472" />
<package id="Npgsql" version="7.0.0" targetFramework="net472" />
<package id="Oracle.ManagedDataAccess" version="21.8.0" targetFramework="net472" />
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
<package id="System.Collections.Immutable" version="7.0.0" targetFramework="net472" />
<package id="System.Diagnostics.DiagnosticSource" version="6.0.0" targetFramework="net472" />

Loading…
Cancel
Save