如何将制表符分隔文件转换为CSV文件

我有一个标签分隔的文本文件,大约1.2 GB,我需要使用c#将其转换为CSV文件(逗号分隔)。 我必须将批量数据插入到sqlserver中,数据是在txt文件中,它是制表符分隔的,但我希望它首先转换为CSV然后插入到sql server或者是否有任何合适的方法将制表符分隔数据插入sql server数据库有效。

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

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

我想出了这个在tab标签上分裂的内容:

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以逗号连接数组中的项目。

如果是SQl Server 2005及更高版本,请右键单击要导入的数据库,然后选择“ 任务” ,然后选择“ 导入数据” 。 指向制表符分隔文件,然后浏览剩余的屏幕。 在最终屏幕上,就在您实际导入之前,您可以选择将其另存为SSIS包 (复选框)。 这是迄今为止最简单,快速和有效的方式(没有从制表符分隔到csv的转换)导入它而无需编写任何代码,并且在向导结束时也可以使用代码,可用于自动执行任务,如果需要。

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

事实上,将其转换为真正的csv将使事情变得更加困难。 BULK INSERT不会将引号视为字符串分隔符,因此一个真正的csv文件,其字符串中的逗号用引号封装的字符串将破坏导入。

有关更多信息,请参阅https://msdn.microsoft.com/en-us/library/ms188365(v=sql.90).aspx 。