-1

我的代码似乎没有正确解决我打算实现的目标。

  • 一根长绳子,而不是一根断裂且分开的绳子
  • 它没有适当地处理“分隔符”(产生,而不是“,”)
  • 还有'可选'(产生'而不是“'”)

当前结果:

LOAD DATA INFILE 'max.csv'BADFILE 'max.bad'DISCARDFILE 
'max.dis' APPEND INTO TABLEADDRESSfields terminated by,optionally enclosed  
 by'(ID,Name,sex)

预期的结果应该是这样的

有没有更好的方法来做到这一点或改进上述代码

4

3 回答 3

2

是的。使用该字符\n在文件中开始一个新行,并将"字符转义为\". 此外,您需要在每个变量后添加一个空格。

content = " LOAD DATA\nINFILE "+ fileName + " BADFILE "+ badName + " DISCARDFILE " + 
discardName + "\n\nAPPEND\nINTO TABLE "+ table + "\n fields terminated by \"" + separator 
+ "\" optionally enclosed by '" + optional + "'\n (" + column + ")";

这是假设fileName, badName, 并discardName在名称周围加上引号。

于 2012-09-12T00:42:18.407 回答
1

不要重新发明轮子...... apache commons-io 库在一行中完成所有这些:

FileUtils.write(new File(controlName), content);

这是javadoc FileUtils.write(File, CharSequence)

如果文件不存在,则将 CharSequence 写入创建文件的文件

于 2012-09-12T00:42:18.900 回答
0

例如,要插入新行,您需要在 windows 中使用 \n 或 \r\n

  discardName + "\n"  //New line here
"APPEND INTO TABLE"

另一方面,对于双引号符号,您需要在逗号周围专门键入 \":

"fields terminated by \"" + separator +"\""

这将产生这个“,”,这类似于可选变量需要是什么

于 2012-09-12T00:58:30.390 回答