【发布时间】:2015-03-31 08:03:39
【问题描述】:
我有一个 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 列 中看到的那样,它们是具有相同数字的元素,而 id 是主键。
表格应如下所示:
tbl学生
id code amount
1 ab11 5000
2 ab11 6000
3 ab11 8000
4 ab11 7000
而另一个表应该包含所有数据,其中只有代码不是“ab11”,并且应该有出现在标题旁边的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 文件插入的表格,我必须跳过第一行
任何帮助和建议将不胜感激
谢谢
【问题讨论】:
-
您需要添加空格
FROM_" + file + "_WITH(我使用下划线表示空格) -
您的数据中有多少行?
-
@YasirMajeed 我不知道它有多少行,因为用户必须使用 'openFileDialog' 打开文件,所以 每个月总会有一些文件更大,一些更小
-
你不能这样做(我认为)...文件在用户的(本地)计算机上,SQL 在另一台计算机上。 BULK INSERT 无法“看到”用户计算机上的文件。
-
和
ROWTERMINATOR = '\\n'
标签: c# sql-server csv