CSVファイルをC#のMySQLデータベースに読み込もうとしていますが、結果セットから読み取れなかった例外が発生し続けます。MySQLワークベンチで構文をクリーンアップして、CSVファイルをMySQLワークベンチのデータベースにエラーなしでロードできるようにしました。プログラムで試してみても、例外が発生します。私が使用しているファイルには、次のパスとファイル名があります。
D:\SANCentral\Customer Files\ibm\70738\0918\switch port.csv
私が得る例外は、「結果セットから読み取ることができませんでした」です。内部例外を見ると、これでファイルが見つかりません。それがどこから来ているのかわかりません。D:\ Projects\CSVParserは私のプロジェクトの場所です。MySQL.Data.Clientクラスが、ファイルを開くために指定した場所で何かを実行していると想定しています。これは、SQLコマンドがファイルをロードしようとしているパスです。
{"Could not find file 'D:\\Projects\\CSVParser\\CSVParser\\bin\\Debug\\SANCentralCustomer Filesibm70738'
.":"D:\\Projects\\CSVParser\\CSVParser\\bin\\Debug\\SANCentralCustomer Filesibm70738"}
どうすればこれを修正できますか?デバッガーで解析したいファイルのパスを確認しましたが、正しいです。プロジェクトを実行しているプロジェクトディレクトリに.CSVファイルを移動しようとしましたが、それでも例外が発生しますが、ファイルが見つからないのではなく、パスに不正な文字が含まれています。
ロードを実行するためのC#コードとMySQLステートメントは次のとおりです。
string ConnectionString = String.Format(@"server=localhost;userid={0};
password={1};database=PerformanceMonitors;
Allow User Variables=True", user,password);
MySqlConnection sqlconnect = new MySqlConnection(ConnectionString);
sqlconnect.Open();
これがMySQLステートメントとクエリの実行です。申し訳ありませんが、文字列は少し長いです:
string working = String.Format(@"LOAD DATA LOCAL INFILE '{0}' IGNORE
INTO TABLE {1} COLUMNS TERMINATED BY ',' LINES TERMINATED BY '\n'
IGNORE 1 LINES (`Switch`,`Port`,`WWPN`,@the_slot,`Port Index`,@the_time,
`Interval`,`Port Send Packet Rate`,
`Port Receive Packet Rate`,`Total Port Packet Rate`,`Port Send Data Rate`,
`Port Receive Data Rate`,`Total Port Data Rate`,
Peak Send Data Rate`,`Port Peak Receive Data Rate`,
Port Send Packet Size
、、、、、、、、、、、、、、、、、、、、、、、、、、) Port Receive Packet Size
_ Overall Port Packet Size
_
Error Frame Rate
_ Dumped Frame Rate
_
Link Failure Rate
_ Loss of Sync Rate
_ Loss of Signal Rate
_ CRC Error Rate
_
Short Frame Rate
_ Long Frame Rate
_ Encoding Disparity Error Rate
_
Discarded Class3 Frame Rate
_ F-BSY Frame Rate
_ F-RJT Frame Rate
_
Port Send Bandwidth Percentage
_ Port Receive Bandwidth Percentage
_
Overall Port Bandwidth Percentage
_ Primitive Sequence Protocol Error Rate
_
Invalid Transmission Word Rate
_ Link Reset Transmitted Rate
_Link Reset Received Rate
SET Slot = nullif(@the_slot,''), Time= str_to_date(@the_time,'%m/%d/%y %h:%i %p')", files.FirstOrDefault().ToString(), "by_switch");
string commandreplaced= working.Replace("\n", "");
MySqlCommand cmd = new MySqlCommand(commandreplaced,sqlconnect);
cmd.ExecuteNonQuery();