Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C从文本行读取文本文件并插入SQL Server数据库_C#_Sql Server_Database_Text - Fatal编程技术网

C# 使用C从文本行读取文本文件并插入SQL Server数据库

C# 使用C从文本行读取文本文件并插入SQL Server数据库,c#,sql-server,database,text,C#,Sql Server,Database,Text,我正在尝试使用C读入文本文件,并将跳过标题的文本文件中的数据插入SQL Server表中 我使用了bulkinsert,但后来了解到,使用bulkinsert跳过文本文件中的标题是误用bulk命令 SET @bulkCommand = ' BULK INSERT ' + @databaseName + ' .dbo.ImportTable FROM ''' + @fileName + ''' WITH (ROWTERMINATOR = ''\n'', FIELDTERMINATOR

我正在尝试使用C读入文本文件,并将跳过标题的文本文件中的数据插入SQL Server表中

我使用了bulkinsert,但后来了解到,使用bulkinsert跳过文本文件中的标题是误用bulk命令

SET @bulkCommand = ' BULK INSERT ' + @databaseName + ' .dbo.ImportTable
FROM ''' + @fileName + '''
WITH (ROWTERMINATOR = ''\n'',
      FIELDTERMINATOR = ''\t'',
      DATAFILETYPE = ''char'',
      MAXERRORS = 0,
      FIRSTROW = ' + CAST (@Data2 AS VARCHAR(10)) + ')';
我已经使用第1-13列的列标题创建了一个表

在大容量插入过程中,文本文件中没有我可以根据的内容进行排序,因此我发现大容量插入将以前的标题作为一行读取,并且遗漏了我尝试导入的一些数据

我认为最好的方法是使用C读取文本文件,并将“数据”直接插入我的SQL Server表中。因此,当C脚本到达line='DATA'+1时,它会将其导入我的SQL Server表

文本文件如下所示:

[Header]
Blah1   1.9.4
Blah2   8/13/2019 9:08 AM
Blah3   Blah_nnnn_C.bpm
Blah4   14376
Blah5   18004
Blah6   116
Blah7   672
[Data]
Column1 Column2 Column3 Column4 Column5 Column6 Column7 Column8 Column9 Column10  Column11  Column12  Column13      
ARS-BFGL-BAC-10972  UK160457403929  G   C   A   B   C   G   0.8651  0.677   0.718   0.4864  -0.2590
ARS-BFGL-BAC-10975  UK160457403929  A   G   A   B   A   G   0.9303  0.604   0.668   0.5116  0.1358
ARS-BFGL-BAC-11025  UK160457403929  G   G   B   B   C   C   0.9092  0.021   0.985   1.0000  -0.0762
ARS-BFGL-BAC-11044  UK160457403929  T   T   A   A   A   A   0.9626  0.941   0.003   0.0000  -0.0977
ARS-BFGL-BAC-11193  UK160457403929  A   A   A   A   A   A   0.9544  0.538   0.000   0.0000  -0.0775
ARS-BFGL-BAC-11215  UK160457403929  A   G   A   B   A   G   0.8400  0.146   0.296   0.5626  -0.7361
ARS-BFGL-BAC-11218  UK160457403929  A   A   A   A   A   A   0.9496  1.186   0.020   0.0000  0.0131
ARS-BFGL-BAC-11276  UK160457403929  A   G   A   B   A   G   0.9416  0.577   0.570   0.5320  -0.1528
ARS-BFGL-BAC-11723  UK160457403929  T   C   A   B   A   G   0.9610  0.566   0.627   0.5039  -0.0593
ARS-BFGL-BAC-11724  UK160457403929  T   C   A   B   A   G   0.8602  0.296   0.600   0.5375  0.1308
ARS-BFGL-BAC-11748  UK160457403929  C   G   A   B   C   G   0.8581  0.506   0.544   0.4631  -0.0229
ARS-BFGL-BAC-11750  UK160457403929  G   G   B   B   G   G   0.9336  0.010   0.783   1.0000  0.0400
ARS-BFGL-BAC-11783  UK160457403929  A   G   A   B   A   G   0.9701  0.266   0.316   0.4858  -0.0636
ARS-BFGL-BAC-1180   UK160457403929  T   C   A   B   A   G   0.9636  0.304   0.369   0.5165  -0.2222
ARS-BFGL-BAC-11805  UK160457403929  G   G   B   B   G   G   0.7832  0.062   1.414   1.0000  0.0778
ARS-BFGL-BAC-11867  UK160457403929  T   T   A   A   A   A   0.9115  1.220   0.054   0.0000  -0.0038
ARS-BFGL-BAC-11913  UK160457403929  G   G   B   B   C   C   0.8620  0.033   1.201   1.0000  -0.0393
ARS-BFGL-BAC-12159  UK160457403929  T   C   A   B   A   G   0.9625  0.434   0.468   0.4957  0.0169
ARS-BFGL-BAC-12297  UK160457403929  A   G   A   B   A   G   0.9440  0.503   0.536   0.4837  -0.0246
ARS-BFGL-BAC-12468  UK160457403929  T   C   A   B   A   G   0.9618  0.578   0.621   0.5011  -0.0039
ARS-BFGL-BAC-12579  UK160457403929  A   A   A   A   A   A   0.8726  0.965   0.055   0.0000  0.1988
ARS-BFGL-BAC-12893  UK160457403929  C   C   B   B   G   G   0.9577  0.015   1.021   1.0000  -0.0088
ARS-BFGL-BAC-1302   UK160457403929  T   C   A   B   A   G   0.9423  0.747   0.648   0.4974  0.1031
ARS-BFGL-BAC-13210  UK160457403929  C   C   B   B   G   G   0.8578  0.019   1.535   1.0000  -0.0282
ARS-BFGL-BAC-13545  UK160457403929  A   A   A   A   A   A   0.9562  0.647   0.013   0.0000  -0.5184
ARS-BFGL-BAC-13568  UK160457403929  T   T   A   A   A   A   0.9588  0.784   0.007   0.0000  0.0387
我可以简单地写入另一个文本文件,比如选择前30行,但不知道如何从“DATA”+1行执行此操作并插入到我的sql表中

using System;
using System.IO;
using System.Linq;

namespace Generic
{
    class ReadFromFile
    {
        static void Main()
        {
            if(File.Exists(@"outputfile.txt"))
            {
                File.Delete(@"outputfile.txt");
            }

            string[] lines = System.IO.File.ReadLines(@"inputfile.txt").Take (30). ToArray();

            foreach (string line in lines)
            {
                Console.WriteLine(line);

                FileStream fs = new FileStream("outputfile.txt",     FileMode.Append);
                TextWriter tmp = Console.Out;
                StreamWriter sw = new StreamWriter(fs);

                Console.SetOut(sw);
                Console.WriteLine(line);

                Console.SetOut(tmp);
                sw.Close();
            }
            //Console.ReadKey();
        }
    }
}
我没有太多的C语言经验,也不知道从哪里开始。 如果有人能帮我,那就太好了

void Main()
{
  using (var stream = File.OpenText(@"d:\temp\SampleTextFile.txt"))
  {
    while (stream.ReadLine() != "[Data]") { };
    stream.ReadLine();


    while (!stream.EndOfStream)
    {
      string line = stream.ReadLine();
      // parse the line and do whatever. ie:
      // line.Split(' ').Where(l => !string.IsNullOrEmpty(l));
    }
  }
}
如果真正的文本文件与您给出的示例一样简单,那么您可以简单地使用Split,每行获取13个项目。该文本文件看起来像一个固定宽度的数据文件,也称为系统数据格式SDF,您可以使用子字符串对其进行解析


PS:字段终止符\t?您确定此文件是以制表符分隔的吗?

是的,当您可以对拆分字符使用\t时,我确定它是以制表符分隔的。