我有一个包含100行的数据集的平面文件和2001这样的属性:
att1,att2,att4,att5,att6,att7,att8,att9,att10,....,att2000,type
5,3,4,4,1,5,1,3,2,4,...,12,Agresti
4,4,2,0,1,0,2,0,0,0,...,22,bbresti
0,0,0,0,0,0,0,0,1,0,...,34,bbresti
0,0,0,1,0,0,0,1,1,1,...,45,Agresti
...
0,6,0,0,0,0,1,0,3.5,...,1,Agresti
我想将此数据预处理为
i,j,val
1,1,5
1,2,4
1,3,0
1,4,0
...
1,100,0
2,1,3
2,2,4
2,3,0
2,4,0
...
2,100,6
3,1,4
3,2,2
3,3,0
3,4,0
...
...
2000,100,1
所以我摆脱了最后一列的类型,我在sql中km我会做类似的事情:
CREATE TABLE matrix (Row int NOT NULL, Column int NOT NULL, Value <datatype> NOT NULL)
SELECT Row AS Column
,Column AS Row
,Value
FROM matrix
但是我想在SQL中导入表格,但代码如何在c#中显示
答案 0 :(得分:1)
以下是一些C#的概念,它将获取您的输入文件并重新格式化您正在请求的内容。然后使用SqlBulkCopy类将数据推送到SQLServer中的表中。
希望它有所帮助。
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string[] parts;
//string[] lines = System.IO.File.ReadAllLines(@"somefile.csv");
string[] lines = new string[] {
"a1,a2,a3,a4,type",
"22,33,44,55,t1",
"222,333,444,555,t2",
"2222,3333,4444,5555,t3" };
int lineno = 1;
string path = @"c:\output.csv";
using (TextWriter writer = File.CreateText(path))
{
foreach (string line in lines)
{
if (lineno > 1)
{
parts = line.Split(',');
for (int a = 0; a < parts.Length - 1; a++)
writer.WriteLine(lineno.ToString() + "," + (a+1).ToString() + "," + parts[a]);
}
lineno++;
}
}
}
}
}