我是一个相当新的编码人员,而我所做的一切我都完全自学了。我尝试读取CSV文件,然后最终将它们输出到SQL服务器。我阅读了很多关于如何执行此操作的内容,并决定使用Visual Studio 2015中的FileHelpers实现它。
我遇到的一个问题是某些数据本身包含逗号(例如:9,500)。我知道很多人建议在数字周围加上引号。但是,我不是输入数字的人。该文件只是以这种方式发送给我,我应该编写代码将其输入到SQL服务器中。 除了引号之外,还有其他方法可以解决该问题吗?此外,我的部分行比其他行短。
ex: Joe, John, Jim, Ben
35, 42, 35, 60
A, B, C, D
40, 50
因此,例如,最后一行没有相同数量的值。它们也不是空的。我已经解决了空值。
它只是不包含它们,当我运行我的代码时,我收到错误 -
"行:29列:4。分隔符','找不到
在现场'小时' (记录的字段较少,分隔符错误,或下一个字段必须标记为可选)。"
我将如何解决这些问题?当我删除包含逗号值(如9,500)的行时,当我还删除不完整的行时,我的代码完美无缺。但是,我需要它来处理所有数据。感谢
答案 0 :(得分:1)
您必须使用
[FieldOptional]
在第3和第4列,如:
[DelimitedRecord(",")]
public class MyRecord
{
public string Field1;
public string Field2;
[FieldOptional]
public string Field3;
[FieldOptional]
public string Field4;
}
答案 1 :(得分:0)
除了引号之外,还有其他方法可以解决该问题吗?
是的,您可以使用星号之类的其他内容对逗号空间组合执行字符串替换。然后拆分星号或特殊字符以获取一系列项目。
string input = "Joe, John, Jim, Ben 35, 42, 35, 60, 9,500";
string output = input.Replace(", ", "*");
string[] myArray = output.Split('*');
如果您的值为9,500,则会将该值解释为一个项而不是两个,因为逗号后面没有空格。
但是,您最好将这些值以CSV中的引号括起来。如果您已安装Excel,请添加一行数字,其中一些包含逗号。然后将工作簿另存为CSV,然后在记事本中打开CSV。您会看到带逗号的数字用双引号括起来。这是我刚刚进行的测试的一个例子。
Numbers entered in a row: 9,000, 1, 8, 7, 500, 125,050
CSV text: "9,000",1,8,7,500,"125,050"
我希望能帮到你。祝你好运。
答案 2 :(得分:0)
“短行”问题可以很容易地在软件中解决:
但是,如果人们以数字输入逗号(例如9,500),那么您就会被填充,并且需要请求格式正确的CSV文件。
从问题中的示例数据来看,这是一个“短行”问题。