[ad_1]
csv データを SQL Server にインポートするためのウィンドウ アプリケーション。
csv ファイルからのデータをインポートして、データベースに保存できます。 ただし、データベーステーブルにすべての列があり、csvfile の 1 つの列にはない場合に追加する方法はありますが、そのデータベースの csv ファイルから他のデータ列を保存します。 たとえば、データベースには列があります [datatime]、[milliseconds]、[pressure] テーブル。 csvファイルにはデータテーブルがあります [datetime] 、 [pressure]. csvデータをSQLサーバーにインポートする方法。
System.InvalidOperationException: ‘The given ColumnName ‘Milliseconds’ does not match up with any column in data source’ というエラーが表示されるためです。
私が試したこと:
C#
private void btnselect_Click(object sender, EventArgs e) { //open serach file to recognise by the OpenFileDialog ofd = new OpenFileDialog(); ofd.DefaultExt = ".csv"; ofd.Filter = "Comma Separated(*.csv)|*.csv"; ofd.ShowDialog(); textfilename.Text = ofd.FileName; } private DataTable GetDataTabletFromCSVFile(string csv_file_path) { DataTable csvData = new DataTable(); try { using (TextFieldParser csvReader = new TextFieldParser(csv_file_path)) { csvReader.SetDelimiters(new string[] { "," }); csvReader.HasFieldsEnclosedInQuotes = true; string[] colfields = csvReader.ReadFields(); foreach(string column in colfields) { while (! csvReader.EndOfData)//eth { string[] fieldData = csvReader.ReadFields(); for (int i = 0; i < fieldData.Length; i++) { if (fieldData[i] == "") { fieldData[i] = null; } } csvData.Rows.Add(fieldData); } } } } catch (Exception ex) { return null; } return csvData; } private void btnImport_Click(object sender, EventArgs e) { { Cursor = Cursors.WaitCursor; DataTable dt = GetDataTabletFromCSVFile(csv_file_path); if (dt == null) return; SaveImportDataToDatabase(dt); MessageBox.Show("Data Import success!"); textfilename.Text = string.Empty; Cursor = Cursors.Default; } } private void SaveImportDataToDatabase(DataTable SS) { using (SqlConnection conn = new SqlConnection(@"Data Source=ytl//bku; Initial Catalog=databse; User Id=***; Password=*****")) { conn.Open(); using (SqlBulkCopy sqlbc = new SqlBulkCopy(conn)) { sqlbc.DestinationTableName = "SS"; sqlbc.ColumnMappings.Add("DateTime", "DateTime"); sqlbc.ColumnMappings.Add("Milliseconds", "Milliseconds"); sqlbc.ColumnMappings.Add("Pressure", "Pressure"); sqlbc.WriteToServer(SS); MessageBox.Show("Bulk data stored ");
解決策 1
CSV データを含む DataTable に「ミリ秒」列を追加し、適切なデフォルト値を指定する必要があります。
[ad_2]
コメント