0

テキスト ファイルを読み取り、各行を列に分割して、それをデータベースに挿入する必要がある課題があります。

これに対する最善のアプローチは何ですか?コードを提供できれば、さらに良いものになります。

これは私がこれまでに持っているものです

    string filename = Server.MapPath("~/Text_File_4.txt");

    StreamReader sr = new StreamReader(filename);

    string styl;
    string colr;
    string sdim;
    string size;
    string qty;
    string line;

    string sprice;
    string sretail;

    while ((line = sr.ReadLine()) != null)

    {
        styl = line.Substring(0, 6);
        colr = line.Substring(6, 2);
        sdim = line.Substring(8, 1);
        size = line.Substring(14, 3);
        qty = line.Substring(19, 5);


        sprice = line.Substring(27, 6);
        sretail = line.Substring(38, 4);

        con.Open();
        cmd = new SqlCommand("insert into ststyl00(ststyl, stcolr, stsdim, stszcd, stprq, strprq) values(@ststyl, @stcolr, @stsdim, @stszcd, @stprq, @strprq)", con);

        cmd.Parameters.Add("@ststyl", SqlDbType.VarChar, 15).Value = styl;
        cmd.Parameters.Add("@stcolr", SqlDbType.VarChar, 3).Value = colr;
        cmd.Parameters.Add("@stsdim", SqlDbType.VarChar, 8).Value = sdim;
        cmd.Parameters.Add("@stszcd", SqlDbType.VarChar, 3).Value = size;

        cmd.Parameters.Add("@stprq", SqlDbType.VarChar, 8).Value = sprice;
        cmd.Parameters.Add("@strprq", SqlDbType.VarChar, 8).Value = sretail;
        cmd.ExecuteNonQuery();
        con.Close();



    }
4

3 に答える 3

3

入力はCSVです

入力ファイルが CSV ファイルの場合は、次の URL で入手できる CSV Reader クラスを使用することを強くお勧めします。

http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader

入力は固定幅です

入力が固定幅の場合は、すべての行を読み取り、個々の行を適切な構造に解析してデータベースに格納します (これについては後で詳しく説明します)。

読むテキストがほんの少ししかない場合 (おそらく数メガバイト以下)、単に

File.ReadAllLines

http://msdn.microsoft.com/en-us/library/s2tte0y1

ファイルのすべての行をstring[]に読み込みます。

DBへの書き込み

これで、ファイルを読み取ることができるようになりました。次に、それをデータベースに書き出す必要があります。おそらく、ファイル内のデータと一致する特定のスキーマを持つ DB テーブルが存在します。ADO.Net を見て、データベースへの書き込み方法を理解し、必要に応じて具体的な質問をしてください。

http://msdn.microsoft.com/en-us/library/h43ks021(v=vs.100).aspx

于 2012-07-24T03:28:35.873 に答える
0

既に提案されている他の解析手法に加えて、TextFieldParserクラス (Microsoft.VisualBasic.FileIO 名前空間にあります) を、既に記述した ADO.Net コードと組み合わせて使用​​できます。

于 2012-07-24T04:22:00.590 に答える
0

これは、区切り記号付きのテキスト ファイルが必要なようです。データを列に区切る区切り文字。

データ1、データ2、データ3、データ4

区切り文字は、コンマまたは通常のデータに表示されないその他の文字である可能性があります。この形式のテキスト ファイルがあれば、簡単に解析してデータベースにプッシュできます。

アプローチは次のようになります。StreamReader を使用してファイルを開きます。ファイルを 1 行ずつ読み取ります。つまり、一度に 1 行ずつ読み取ります。区切り文字を指定して行を列に分割します。

string[] lineData = sr.ReadLine().split('delimiter');
foreach(string colData in lineData)
{
     //store data into appropriate collections and push it to database
}
于 2012-07-24T03:27:55.410 に答える