0
私はcsvファイルをSQLサーバにインポートする必要があるSQL一括コピーウィンドウアプリケーションに取り組んでいます。しかし、IPアドレスのデータには問題があるようです。csvファイル内のIPアドレスをsqlサーバにインポートする際の問題
CSVファイルのデータをカンマ区切りやサンプルデータが
Email,FirstName,LastName,Company,Address1,Address2,City,State/Province,Zip/PostalCode,Country,Phone,SecondaryPhone,Fax,DateEntered,OriginalIP,LatestIP
[email protected],,,,,,,,,,,,,2/29/16 15:56,12.251.217.166,12.251.217.166
[email protected],,,,,,,,,,,,,2/29/16 15:57,70.57.244.202,70.57.244.202
以下のようである。しかし、インポートすると、最後の2列はlastipとlatestipすなわち除いて、すべてが大丈夫です..
値がインポートされているが
です12.2512,12.2512 for 1st row and same for 2nd row ie. 70.5724 ,70.5724
コードは以下の通りである
DataSet ds = new DataSet();
try
{
// Creates and opens an ODBC connection
string strConnString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + this._dirCsv.Trim() + ";Extensions=asc,csv,tab,txt;Persist Security Info=False";
string sqlSelect;
OdbcConnection conn;
conn = new OdbcConnection(strConnString.Trim());
conn.Open();
//Creates the select command text
if (numberOfRows == -1)
{
sqlSelect = "select * from [" + this.FileNevCsv.Trim() + "]";
}
else
{
sqlSelect = "select top " + numberOfRows + " * from [" + this.FileNevCsv.Trim() + "]";
}
//Creates the data adapter
OdbcDataAdapter objOledbDa = new OdbcDataAdapter(sqlSelect, conn);
//Fills dataset with the records from CSV file
objOledbDa.Fill(ds, "csv");
//closes the connection
conn.Close();
}
catch (Exception e) //Error
{
MessageBox.Show(e.Message, @"Error - LoadCSV", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
return ds;
。解決ここでは、この
レH @
private void WriteSchema()
{
try
{
FileStream fsOutput = new FileStream(this._dirCsv + "\\schema.ini", FileMode.Create, FileAccess.Write);
StreamWriter srOutput = new StreamWriter(fsOutput);
string s1, s2, s3, s4, s5;
s1 = "[" + this.FileNevCsv + "]";
s2 = "ColNameHeader=" + chkFirstRowColumnNames.Checked.ToString();
s3 = "Format=" + this._strFormat;
s4 = "MaxScanRows=25";
s5 = "CharacterSet=" + this._strEncoding;
srOutput.WriteLine(s1.ToString() + "\r\n" + s2.ToString() + "\r\n" + s3.ToString() + "\r\n" + s4.ToString() + "\r\n" + s5.ToString());
srOutput.Close();
fsOutput.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, @"writeSchema");
}
finally
{ }
}
これはIPアドレスのようです10進数として解析/解釈されます...データベース内のターゲット列のデータ型は何ですか? – bassfader
nvarchar(4000)はdatattypeですが、グリッドにデータをロードする場合も上記のコードはデータをロードすることです..同じ出力もあります – Mahajan344
テスト目的のために - (double?)最初の2〜3行のIPアドレスを引用符で囲み、何が表示されるのかを確認します。 IMHOこの問題はMSSQLに関連するのではなく、 'Microsoft Text Driver'がどのようにファイルの内容を解釈するのかに関係しています。ファイルの隣にschema.iniファイルがない場合、ドライバは読み込みしようとしているものを把握するために「最善のもの」を試します。最後の列について間違っているように思われるので、schema.iniファイルを追加してみてください(cf https://msdn.microsoft.com/en-us/library/ms709353(v=vs.85).aspx) – deroby