我有一個包含大量CSV文件的目錄。我想遍歷目錄並根據文件名將每個文件插入到特定的表中。循環訪問目錄中的CSV文件並將它們插入到Access中
我能夠成功地遍歷文件,但我在將數據插入Access數據庫時遇到了一些問題。我相信我非常接近。對於任何反饋,我們都表示感謝。
這是我的代碼:
string folderPath = Path.Combine(Path.GetTempPath(), "Reports");
string folderPath2 = Path.GetTempPath() + @"\Reports\";
var dir = new DirectoryInfo(folderPath);
foreach (var fileInfo in dir.EnumerateFiles("crashes_*.csv"))
{
OleDbCommand cmdBulk = new OleDbCommand(@"INSERT INTO tbl_crashes " +
@"SELECT * FROM [Text;FMT=Delimited;HDR=Yes;ACCDB=Yes;Database=" + folderPath2 + "].[" + Directory.GetFiles(folderPath2, "crash*.csv") + "]", MyConn);
MyConn.Open();
cmdBulk.ExecuteNonQuery();
MyConn.Close();
}
這是我收到的錯誤:
Invalid bracketing of name 'System.String['.
您的'foreach'循環看起來像迭代了EnumerateFiles'返回的一堆文件,但是在循環內部實際上並沒有使用'fileInfo'變量,而是調用'Directory.GetFiles',它看起來像它會返回另一個*列表*的文件(或者可能再次列出相同的列表)。 –
@GordThompson如何使用fileInfo變量對每個文件執行操作? – YoungStamos
這件作品看起來很奇怪... 您試圖將一個數組添加到字符串中......這看起來不正確... ']。[「+ Directory.GetFiles(folderPath2,」crash *。 csv「)+」]「' – pmeyer