错误:上次预期列后的额外数据尝试插入csv文件时

时间:2015-05-28 18:17:45

标签: java sql postgresql csv postgresql-9.2

我正在尝试使用java

在postgresql数据库中插入csv文件

代码是

CopyManager copyManager = new CopyManager((BaseConnection) conn);

            FileReader fileReader = new FileReader(filename);

            copyManager.copyIn("COPY meta.fk_payment_temp(\n"+
                    "settlement_ref_no, order_type, fulfilment_type, seller_sku, wsn, \n" +
"            order_id, order_item_id, order_date, dispatch_date, delivery_date, \n" +
"            cancellation_date, settlement_date, order_status, quantity, order_item_value, \n" +
"            refund, protection_fund, total_marketplace_fee, service_tax, \n" +
"            settlement_value, commission_rate, commission, fee_discount, \n" +
"            cancellation_fee, fixed_fee, emi_fee, total_weight, shipping_fee, \n" +
"            reverse_shipping_fee, shipping_zone, token_of_apology, pick_and_pack_fee, \n" +
"            storage_fee, removal_fee, invoice_id, invoice_date, invoice_amount, \n" +
"            sub_category, total_offer_amount, my_offer_share, flipkart_offer_share)\n" +
"     FROM STDIN with csv header delimiter ','", fileReader );

csv文件和表

中有41列

错误细节是:

  

其中:COPY fk_payment_temp,第2行:   “NFT-150331087GN00107XXXXXXX,预付费,无FA,BD46-157,OD102411813209536003,166288248,” 三月   25,2015“,”......“

因为我们看到错误发生在“2015年3月25日”,但数据是

NFT-150331087GN00107XXXXXXX预付费非FA-BD BD46-157 OD102411820209536003 166288248 25-Mar-15 26-Mar-15 27-Mar-15 31-Mar-15已交付1 339 339 0 0 -85.26 -10.54 243.2 15 -50.86 0 0 -5 0 0.3 -29.4 0 LOCAL 0 0 0 0 IN27248 26-Mar-15 309 babydoll 0 0 0

我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:0)

我的经验是,这几乎总是由格式错误的csv数据引起的。确实知道格式,如何审查材料以进行适当的转义等等,确实无可替代。而CSV并不简单。关于嵌入式行尾字符之类的内容有很多规则。

一个好的起点(如果您还没有找到答案)将通过电子表格运行数据并查看错误列上的内容。