XMLファイルからMySQLテーブルにデータを転送するための最速のソリューションが必要です。次のように、内部に複数のテーブルを含むXMLファイルがあります。
<?xml version="1.0" standalone="yes"?>
<RawData xmlns="">
<Table1>
<ID_Table1>1</ID_Table1>
<Name>Victor</Name>
</Table1>
<Table2>
<ID_Table2>1</ID_Table2>
<Quantity>10</Quantity>
</Table2>
</RawData>
VS2010内には、Table1とTable2用のMySqldbのDataTablesとTableAdaptersを含むデータソースがあります。私の目標は、XMLファイルを読み取り、そのデータを次の方法でこれらのDataTablesに直接渡すことでした。
myDSDataSet eDS = (myDSDataSet)this.FindResource("myDS"); // Declared in XAML
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "XML Files|*.xml";
dlg.Title = "Select a XML File";
Nullable<bool> result = dlg.ShowDialog();
if (result == true)
{
mt1TableAdapter mt1_TA = new mt1TableAdapter();
mt2TableAdapter mt2_TA = new mt2TableAdapter();
manager = new TableAdapterManager();
xmlDS = new DataSet();
dt = null;
try
{
xmlDS.ReadXml(dlg.FileName,XmlReadMode.InferTypedSchema);
for (int i = 0; i < xmlDS.Tables.Count; i++)
{
dt = xmlDS.Tables[i].Copy();
eDS.Tables[eDS.Tables.IndexOf(xmlDS.Tables[i].TableName)].Merge(dt);
}
mt1_TA.Update(eDS.mt1);
mt2_TA.Update(eDS.mt2);
MessageBox.Show("Loading complete.");
}
catch (Exception error)
{
MessageBox.Show("ERROR: " + error.Message);
}
}
しかし、このコードを実行した後、2つの大きな問題が発生しました:1。データ型が異なる場合、例外が発生します(DataSourceフィールドはDateTimeで、XMLフィールドは文字列として読み取られます)2。TableAdapter.Update()を呼び出すと、データを保存するのに長い時間がかかりますdb(15k行は10〜15分かかります)
だから...私の質問は、誰かが私がこれらの2つの問題を解決するのを手伝ってくれるか、XMLデータをmysqlに保存するための最速で最良の方法について教えてくれませんか。
注:-私はVS2010とMySQL5.1を使用しています。-XMLファイルは外部ソースからロードする必要があります。--XMLにはxmlnsがありますが、簡単にするためにここでは省略しています。--MySQLを5.6にアップグレードしてLOADXMLを使用しようとしましたが、ストアドプロシージャ内でこのコマンドを使用できません。
ありがとう