.csv
ファイルには57列あり、一部の値は空です。たとえば、,Jane,Doe,,35
です。たとえば、コンマの前の最初の値がデータベースにインポートされるたびに増分する自動IDキーの場合を考えてみましょう。問題は、空の値がインポートされないため、エラーが発生することです。ここで私が理解しているのは、SQLデータベースは空の値を読み取ることができないので、値がJane,Doe,35
のように移動するため、Jane
の値はID
になります。別の懸念は、.csv
ファイルの列がテーブルと一致しないことです。たとえば、テーブルはID
の列を持ち、.csv
のファイルはName
の列で始まります。特定の列からデータベースにインポートする方法はありますか?CSVファイルをSQL Serverデータベースにインポートする
注:これは1つの表にのみ記載されています。 質問:.csv
ファイルの列と一致する別のテーブルを作成し、それを列ID
(この例では)のテーブルと結合すると、より望ましいでしょうか?
私のコード今のところ:上記のコードの場合
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[54] { new DataColumn("Delay_Code"), and so on... });
string csvData = File.ReadAllText(e.FullPath);
foreach (string row in csvData.Split('\n'))
{
if (!string.IsNullOrEmpty(row))
{
dt.Rows.Add();
int i = 0;
foreach (string cell in row.Split(','))
{
dt.Rows[dt.Rows.Count - 1][i] = cell;
i++;
}
}
}
string consString = @"Data Source="blahblah";
using (SqlConnection con = new SqlConnection(consString))
{
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
{
//Set the database table name
sqlBulkCopy.DestinationTableName = "owner.Table";
con.Open();
sqlBulkCopy.WriteToServer(dt);
con.Close();
}
}
、私は.csv
ファイルの列に一致する別のテーブルを作成しました。もともと、テーブルには、.csv
ファイルの列の前に3つの先行列があります。
これにはどのような方法が最適ですか?