簡體   English   中英

如何使用BULK INSERT管理我插入表中的數據

[英]how to manage the data I insert into a table using BULK INSERT

我有一個C#應用程序 ,可將數據從csv文件捕獲到SQL表

文本文件如下所示

students.csv

Header 201501
id      code    amount
1       ab11    5000
2       ab11    6000
3       ab11    8000
3       wx34    2500
3       df21    1000
4       ab11    7000
4       zx54    3500

每個項目都在csv文件的自己的單元格中。 “我只是將其隔開,以便您可以看到文件中的內容”。

基本上,我必須將此數據插入到兩個表中,但是正如您在id列中看到的那樣,are元素具有相同的編號,而id是主鍵

該表應如下所示:

tbl學生

id      code    amount
1       ab11    5000
2       ab11    6000
3       ab11    8000
4       ab11    7000

而另一個表中的所有數據應僅包含帶有非“ ab11”代碼的數據,並且應具有出現在Header旁邊的csv文件中月份。 並如下圖

tblPaid

Header 201501
id      code    amount month
3       wx34    2500   201501
3       df21    1000   201501
4       zx54    3500   201501

這是我目前所擁有的,但似乎無法獲得輸出

private void btnSelect_Click(object sender, EventArgs e)
{


    btnNext.Enabled = true;

    openFileDialog1.Filter = ".csv file|*.csv*";
    openFileDialog1.FilterIndex = 1;

    DialogResult result = openFileDialog1.ShowDialog();

    if (result == DialogResult.Yes)
    {
        String file = openFileDialog1.FileName;
        btnNext.Enabled = true;

        try
        {
            string connect = "Data Source=BRIAN-PC\\SQLEXPRESS; Initial Catalog=PSAHoldings; user id =sa; Password=kagiso";

            string table = "IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='t_original' AND xtype='U')" +
                "CREATE TABLE t_original (" +
                "empId varChar(10) NOT NULL PRIMARY KEY," +
                "paycode varChar(10) NOT NULL," +
                "amount int NOT NULL," +
                ")";

            SqlConnection con = new SqlConnection(connect);
            con.Open();

            SqlCommand createTable = new SqlCommand(table, con);
            createTable.ExecuteNonQuery();


            String BulkInsert = "BULK INSERT t_original FROM_" +
                file + "_WITH (--FIRSTROW = 3," +
                "FIELDTERMINATOR = '|'," +
                "ROWTERMINATOR = '\\n')";

            SqlCommand bulkCmd = new SqlCommand(BulkInsert, con);
            bulkCmd.ExecuteNonQuery();

        }
        catch (SqlException ex)
        {
            MessageBox.Show(ex.ToString(), "Exception Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}

我什么都沒進桌子,我的桌子是空的

t_original是我必須將students.csv文件插入其中的表,而我必須將第一個跳過

任何幫助和建議將不勝感激

謝謝

您對@StuartLC的評論太直白了; 如他所說,他評論中的下划線代表空格。 添加的下划線的作用是,現在顯示為: BULK INSERT t_original FROM_{file} (注意from和file之間沒有空格)。 WITH前面的下划線也是如此。

此外,雙破折號( -- )表示注釋,因此它之后的所有內容都不會執行。

如果您調試並獲取BulkInsert的實際值,然后執行該語句,如果執行該語句,我將感到非常驚訝,這可能會使錯誤更容易發現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM