我们最近收到了一堆带制表符分隔符的文件。
我们在sql server数据库中导入它们时遇到了困难。
发送文件的供应商也发送了以下代码供我们用于将文件从制表符转换为逗号分隔符。
如何在visual studio中使用此文件。
我已经多次使用过visual studio,但是我还没有将它用在像这样的单个文件中。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace TabToComma
{
class Program
{
static void Main(string[] args)
{
StreamReader sr;
StreamWriter sw;
sr = new StreamReader(@"c:\input.txt");
sw = new StreamWriter(@"c:\output.txt");
string nextline;
string replacedline;
while (sr.Peek() >= 0)
{
nextline = sr.ReadLine();
replacedline = nextline.Replace('\t',','); // replace each tab in line with a comma
sw.WriteLine(replacedline);
}
sr.Close();
sw.Close();
}
}
}
或者,如果有人知道如何使用vbscript完成同样的事情,请指出我正确的方向。
非常感谢
答案 0 :(得分:6)
创建一个控制台应用程序,并用上面的文本替换生成的program.cs的内容。然后,点击RUN:)
答案 1 :(得分:3)
您需要创建一个新的控制台应用程序,然后将此代码粘贴到作为解决方案一部分创建的示例文件中。然后将“c:\ input.txt”更改为要转换的文件,然后点击“运行”。
答案 2 :(得分:2)
此外,只要文件大小合适,这里就可以替换Main()
的内容,这可能会让您的生活更轻松:
foreach(string f in args) {
System.IO.File.WriteAllText(f, System.IO.File.ReadAllText(f).Replace('\t', ','));
}
编译并将所有文件拖放到生成的可执行文件中。它们会自动转换。
如果您在编译时遇到问题,您甚至可以从此处获取已编译的可执行文件:http://dl.dropbox.com/u/2463964/TabsToCommas.exe。
答案 3 :(得分:2)
好的,在各种方法的答案中,如何替换字符串中的字符,这很好。但不幸的是,现实并不那么容易。例如,如何用逗号处理数据?就像Telephone bill{tab}USD{tab}1,234.00
成为Telephone bill,USD,1,234.00
一样。插入一个额外的列并且数据被破坏,因为数据库注册了您的电话费仅为1美元。幸运的是,问题不是相反,因为即使The Scripting Guy也没有防水解决方案。
您的供应商应提供的是逐行阅读器,其中每行在制表符上拆分为包含所有值的数组。然后读出数组中的所有值,以查看值中是否有一个或多个逗号,并用双引号将其包装起来。之后,数组将汇编为逗号上带有join
的字符串,以使其成为“真正的”CSV file。
但是,如果你能从源头解决问题,为什么要经历所有麻烦呢?为什么不将数据标记为SQL中的制表符分隔?
BULK
INSERT TableYouWantToImportTo
FROM 'c:\input.txt'
WITH
(
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n'
)
GO