2

ASP .NET アプリケーションの SQL に CSV ファイルをインポートしています。.csv をインポートすることはできますが、1 つの列に数値以外のものが含まれていると、NULL 値が含まれます。

この行は正常にインポートされます:

1109,003,IN,0093219095,3/17/2013,3/21/2013,,Sobeys Warehouse,4819.13,61.37,4880.50,RV,1109-003

4 番目の列は、SQL では NULL です。

1109,999,IN,REF 44308/S. DRA,3/18/2013,3/21/2013,,"EC Rebates W/E -02 14, 2013",-200.02,0.00,-200.02,SA,1109-999

テキストを含む他のすべての列は正常にインポートされますが、4 番目の列だけが問題です。影響を受けた列が他の列と何が違うのかわかりません。テキストを数字に置き換えると、インポートされるため、テキストデータと関係があります。SQL フィールドは nvarchar(50) であるため、データ型の問題ではありません。

私の接続文字列(dirにはフォルダーへのパスが含まれています):

string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"" + dir + "\\\";Extended Properties='text;HDR=Yes;FMT=Delimited(,)';";

インポート コード:

    public DataTable GetCSV(string path)
    {
        if (!File.Exists(path))
        {
            return null;
        }

        DataTable dt = new DataTable();
        string fullPath = Path.GetFullPath(path);
        string file = Path.GetFileName(fullPath);
        string dir = Path.GetDirectoryName(fullPath);
        string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"" + dir + "\\\";Extended Properties='text;HDR=Yes;FMT=Delimited(,)';";
        string query = "SELECT * FROM " + file;
        System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(query, connString);

        try
        {
            da.Fill(dt);
        }
        catch (InvalidOperationException)
        {
        }

        da.Dispose();

        return dt;
    }
4

1 に答える 1

1

これで私の問題は解決しました。正しい方向に向けてくれた Pondlife に感謝します。データ型に関係があると思いましたが、どこで問題が発生しているのかわかりませんでした。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms709353%28v=vs.85%29.aspx

于 2013-05-06T19:38:04.017 に答える