Java 生成CSV文件,其中一些值被引用,其他值未被引用
我刚开始写CSV文件,有一个场景我找不到答案。我需要生成一个没有标题的CSV文件,其中数字值不带引号,字符串带引号。例如-71,72,“初始”,“2020-10-01” 我使用了CSVWriter构造函数:Java 生成CSV文件,其中一些值被引用,其他值未被引用,java,kotlin,opencsv,Java,Kotlin,Opencsv,我刚开始写CSV文件,有一个场景我找不到答案。我需要生成一个没有标题的CSV文件,其中数字值不带引号,字符串带引号。例如-71,72,“初始”,“2020-10-01” 我使用了CSVWriter构造函数: CSVWriter(FileWriter(ClassLoader.getSystemResource("mytable.csv").path), ',', '\'', '\"', "\n") 我试图用双引号填充字符串值,但这不起作用 val
CSVWriter(FileWriter(ClassLoader.getSystemResource("mytable.csv").path), ',', '\'', '\"', "\n")
我试图用双引号填充字符串值,但这不起作用
val linesForCSVUploadToTable = arrayOf(
someId.toString(),
someOtherId.toString(),
"\"initial\"",
"\"2020-10-15\"",
"\"2020-10-15\"",
"\"csv\"",//created_by
"\"2020-10-15\"",
"\"csv\"",
"\"csv\"",
"\"2020-10-15\""
)
输出为:
'100001','100001','""initial""','""2020-10-15""','""2020-10-15""','""csv""','""2020-10-15""','""csv""','""csv""','""2020-10-15""'
我必须.toString ID,因为writeAll()和writeNext()函数似乎采用字符串数组,并且不接受任何类型的数组
我想避免编写自己的自定义CSV编写器。如果有必要的话,那就这样吧
我正在使用OpenCSV5.2并在Kotlin中编写这篇文章。Java也可以工作
任何帮助都将不胜感激!谢谢您可能应该使用,它提供了非数字
报价策略,从而在CSV文件中引用任何非数字值示例:
try(Writer w=…){
CSVFormat outFormat=CSVFormat.newFormat(',')
.withRecordSeparator(“\n”)
.withQuote(“\”)
.withQuoteMode(QuoteMode.MINIMAL);
CSVPrinter打印机=新的CSVPrinter(w,输出格式);
打印机。打印记录(…);
}
您可能应该使用,它提供了非数字的
引用策略,从而在CSV文件中引用任何非数字值。示例:
try(Writer w=…){
CSVFormat outFormat=CSVFormat.newFormat(',')
.withRecordSeparator(“\n”)
.withQuote(“\”)
.withQuoteMode(QuoteMode.MINIMAL);
CSVPrinter打印机=新的CSVPrinter(w,输出格式);
打印机。打印记录(…);
}
这是一个奇怪的要求。。。定义何时以及如何引用,那么您为什么会偏离这一点?除非您处理的是不一致的CSV读取器?您的意思是,您存储的某些值应该包括引号,而不管它们是如何存储的? (这是完全可以理解的——但是CSV的作者和读者应该为您处理好这一切。) 或者,您的意思是生成的CSV文件应该引用一些值,而其他值不应该引用? (我不知道这样做有什么好的理由。 正如罗伯特所说,这是非常不标准的,很可能表明某个地方存在误解。 不管你是否引用字段,最终结果通常都是一样的。)@Robert我猜这是一个不符合CSV的阅读器?这个CSV将批量上传约5000万行到我的AWS Aurora Postgres DB中,CSV行必须与您的表结构相匹配,我的是-BigInt、BigInt、String等。我想AWS中的这个CSV阅读器不会将字符串解析为int?@gidds我需要不引用数字和引用字符串这是一个奇怪的要求。。。定义何时以及如何引用,那么您为什么会偏离这一点?除非您处理的是不一致的CSV读取器?您的意思是,您存储的某些值应该包括引号,而不管它们是如何存储的? (这是完全可以理解的——但是CSV的作者和读者应该为您处理好这一切。) 或者,您的意思是生成的CSV文件应该引用一些值,而其他值不应该引用? (我不知道这样做有什么好的理由。 正如罗伯特所说,这是非常不标准的,很可能表明某个地方存在误解。 不管你是否引用字段,最终结果通常都是一样的。)@Robert我猜这是一个不符合CSV的阅读器?这个CSV将批量上传约5000万行到我的AWS Aurora Postgres DB中,CSV行必须与您的表结构相匹配,我的是-BigInt,BigInt,String,等等。我猜AWS中的CSV阅读器不会将字符串解析为int?@gidds我需要不引用数字和引用字符串这正是我要找的!谢谢你!这正是我要找的!谢谢你!