string strPath = "c:\test.csv"; DataTable dt = new DataTable(); //Shift JISで読み込む using (Microsoft.VisualBasic.FileIO.TextFieldParser tfp = new Microsoft.VisualBasic.FileIO.TextFieldParser(strPath, System.Text.Encoding.GetEncoding(932))) { //フィールドをが文字で区切るか。デフォルトでDelimited。 tfp.TextFieldType = FieldType.Delimited; //区切り文字を「,」 tfp.Delimiters = new string { "," }; //フィールドを「"」で囲み、改行・区切り文字を含めるか。デフォルトでtrue。 tfp.HasFieldsEnclosedInQuotes = true; //フィールドの前後のスペースを削除。デフォルトでtrue。 tfp.TrimWhiteSpace = true; //先頭行を読み込み、列を定義 string fields = tfp.ReadFields(); foreach (string field in fields) { switch (field) { case "商品名": dt.Columns.Add(field, Type.GetType("System.String")); break; case "単価": dt.Columns.Add(field, Type.GetType("System.Int32")); break; default: dt.Columns.Add(field, Type.GetType("System.String")); break; } } //2行目から、値を読み込む while (!tfp.EndOfData) { string[] values = tfp.ReadFields(); //値を読み込む dt.Rows.Add(values); } tfp.Close(); } //DBへ1行ずつ取込み using (SqlConnection cn = new SqlConnection(strCon)) { cn.Open(); for (int r = 0; r < dt.Rows.Count; r++) { using (SqlCommand cmd = cn.CreateCommand()) { cmd.CommandText = @" insert into Table1 ([商品名],[単価]) values (@name, @tanka)"; cmd.Parameters.Add("@name", SqlDbType.NVarChar).Value = dt.Rows[r]["商品名"]; cmd.Parameters.Add("@tanka", SqlDbType.Int).Value = dt.Rows[r]["単価"]; cmd.ExecuteNonQuery(); } } cn.Close(); }