2012-11-28 166 views
0

我有一个选项卡分隔的文本文件,大约1.2 GB,我需要使用c#将其转换为CSV文件(逗号分隔)。 我必须插入批量数据到sqlserver,数据是在txt文件,这是选项卡分隔,但我希望它先转换为CSV,然后插入到SQL Server或有任何合适的方式来插入选项卡分隔的数据高效地转换到sql server数据库。如何将制表符分隔文件转换为CSV文件

+0

您是否考虑过使用Integration Services导入数据? –

+0

@WadhawanVishal - 只需读取文件内容并使用逗号分隔值而不是制表符创建新文件。 –

回答

1

将制表符分隔文件导入Excel(或其他电子表格程序),然后将其导出为CSV。

+0

这是一个很好的“框外”答案。唯一的另一种选择是读取整个文件,并使用逗号分隔标签保存一个新文件,以分离值。 –

0

如果你使用sqlserver,你应该看看SSIS(SqlServer集成服务)。这个工具将帮助你以有效的方式导入你的csv文件。您可以在此工具中配置分隔符,因此不需要用逗号替换选项卡。

0

我想出了这样其将在制表符:

using(System.IO.StreamReader rdr = new System.IO.StreamReader(@"C:\text.txt")) 
    { 
      int counter = 0; 
      string lne; 
      while((lne = rdr.ReadLine()) != null) 
      { 
       string[] temp = lne.Split('\t'); 
       Console.WriteLine(temp[0]); 
       Console.WriteLine(temp[1]); 
       counter++; 
      } 
    } 
    Console.ReadLine(); 

后,你可以只使用StringBuilder来连接用逗号数组中的项目。

0

如果它的SQL Server 2005和上方,右键单击要导入并选择任务数据库,然后导入数据。指向您的制表符分隔文件,只需浏览其余的屏幕。在实际导入之前的最后一个屏幕上,您可以选择将其保存为SSIS程序包(复选框)。这是迄今为止最简单,快速和有效的方式(无需从制表符分隔到csv的转换)导入它,而无需编写任何代码,代码也可在向导的末尾使用,该向导可用于自动执行任务,如果需要。

0

默认情况下,SQL Server 2005中的BULK INSERT命令将使用选项卡作为字段分隔符,因此不需要将制表符分隔的文本文件转换为csv格式。

事实上,将其转换为真正的csv会让事情变得更加困难。 BULK INSERT不会将引号视为字符串分隔符,因此一个真正的csv文件具有在字符串某处用逗号括起的引号封装的字符串将会中断导入。

查看https://msdn.microsoft.com/en-us/library/ms188365(v=sql.90).aspx了解更多信息。

相关问题