0
データテーブルからSQLテーブルに値を挿入していますが、「データ型エラーの変換」が表示されています。私のソースファイルは固定幅で、これらの値を取得するために部分文字列を使用しています。データテーブルからSQLテーブルに文字列データ型をdecimalとintにキャストする方法
Source:
Amount Name Id Date
-33,167.74 NHP 1,503 05/09/2017
これは私のターゲット表がカラムとデータ型
id int
name string
amount money
date datetime
の下に、私はすべてのデータの変換エラーを取得していたデータテーブルに
private DataTable InsertDataTable()
{
DataTable datatable = new DataTable();
datatable.Columns.Add("Id", typeof(int));
datatable.Columns.Add("amount", typeof(decimal));
datatable.Columns.Add("name", typeof(string));
datatable.Columns.Add("date", typeof(datetime));
//--inserting datatable
foreach (string row in columns)
{
datarow["Id"] = Convert.ToInt32(row.Substring(51, 12).Trim().Replace(",", ""));
datarow["Amount"] = Convert.ToDecimal(row.Substring(0, 9).Trim());
datarow["date"] = Convert.ToDateTime(row.Substring(12, 18).Trim());
datarow["name"] = Convert.ToDecimal(row.Substring(20, 35).Trim());
datatable.Rows.Add(datarow);
}
}
private void InsertSqlTable()
{
DataTable finaldatatable = InsertDataTable();
//sql connection--------------------
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
{
//Set the database table name
sqlBulkCopy.DestinationTableName = "[dbo].[table]";
sqlBulkCopy.ColumnMappings.Add("id", "id");
sqlBulkCopy.ColumnMappings.Add("amount", "amount");
sqlBulkCopy.ColumnMappings.Add("name", "name");
sqlBulkCopy.ColumnMappings.Add("date", "date");
}
}
を使用してSQLテーブルを挿入するための私のコードです文字列を除く型。私のIDは1,503で1503が欲しいです。 誰かが正しいデータ型に変換するのを助け、IDからカンマも削除できますか? ご迷惑をおかけして申し訳ございません。
私が正しくカウントしていた場合、その量は右、位置0から10個の文字を持っていますか?これらの部分文字列の位置はすべてオフになっていますか? –
これはデータを模倣しているので、私の部分文字列の値は異なります。まず、データテーブルの任意の値からカンマを削除する方法を知りたい。 – chits
C#でお手伝いできない場合は、他の人があなたを案内する必要があります。しかし、これは "-33,167.74"に10文字が含まれ、部分文字列の長さが9にすぎないという事実を変更しません。 –