JAVA学习13_line.split("")的使用和解决ES接收数据不全的问题

本文介绍了在使用Java读取CSV文件时遇到的数据丢失问题,特别是当字段内存在逗号导致line.split(",")错误分割数据。通过分析和修改代码,解决了这一问题,确保了数据完整发送到Elasticsearch。" 47427007,5149927,自定义iOS UIPageControl:使用自定义图片替换小圆点,"['iOS开发', '自定义UI', 'Objective-C']

在使用Java程序读取.csv文件时,遇到数据读取不全,部分数据丢失的问题。

对传输成功的数据和丢失的数据进行对比:

"1227280156","21-SEP-15 12.55.21.830 PM","11.1.12.132","1","144.28.139.144","106.38.221.238","4587","80","20:16:A3:C4:06:67","00:0D:48:2A:64:D9","","","","6","传统协议","","HTTP","","","","","","","","","","","/crossdomain.xml","GET","0","","","http://static.youku.com/v1.0.0569/v/swf/loader.swf","0","valc.atm.youku.com","","娱乐视频","","",""
"1227280157","21-SEP-15 12.55.21.830 PM","11.1.12.132","1","35.16.151.233","144.28.238.149","51868","80","20:16:A3:B7:DD:5A","00:0D:48:2A:64:D9","","","","6","传统协议","","HTTP","","","","","","","","","","","/swfs/51/2765427637x/gfd8fhd.flv","GET","0","","Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)","http://ubmcmm.baidustatic.com/media/v1/0f0007ZXkm5LYjHeqBwkc0.swf","0","kwflvcdn.000dn.com","","","","",""


为了观察方便,进行展开:

"1227280156",
"21-SEP-15 12.55.21.830 PM",
"11.1.12.132",
"1",
"144.28.139.144",
"106.38.221.238",
"4587",
"80",
"20:16:A3:C4:06:67",
"00:0D:48:2A:64:D9",
"",
"",
"",
"6",
"传统协议",
"",
"HTTP",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"/crossdomain.xml",
"GET",
"0",
"",
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36",
"http://static.youku.com/v1.0.0569/v/swf/loader.swf",
"0",
"valc.atm.youku.com",
"",
"娱乐视频",
"",
"",
""


"1227280157",
"21-SEP-15 12.55.21.830 PM",
"11.1.12.132",
"1",
"35.16.151.233",
"144.28.238.149",
"51868",
"80",
"20:16:A3:B7:DD:5A",
"00:0D:48:2A:64:D9",
"",
"",
"",
"6",
"传统协议",
"",
"HTTP",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"/swfs/51/2765427637x/gfd8fhd.flv",
"GET",
"0",
"",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",
"http://ubmcmm.baidustatic.com/media/v1/0f0007ZXkm5LYjHeqBwkc0.swf",
"0",
"kwflvcdn.000dn.com",
"",
"",
"",
"",
""

上面那条数据发送失败,下面那条数据发送成功。

然后寻找原因,发送过程中使用到了ine.split(",")对数据进行分割,第一条数据的字段中,也出现有逗号,因此会导致数据分割失败。

对代码进行修改:

String[] str = line.split("\",");

增加过滤的内容,保证数据不被单个逗号影响。

此时,数据发送成功。


def setup_logger(project): # 获取当前日期 today = datetime.now().strftime("%Y-%m-%d") # 拼接文件路径 格式化字符串 filedir = os.path.join(os.path.dirname(os.path.abspath(__file__)), r"..\logs") # filedir = os.path.join(os.path.dirname(os.path.abspath(__file__)), r"../../logs") # filedir = os.path.join(os.path.dirname(os.path.abspath(__file__))) filefmt = os.path.join(filedir, f'{project}_{today}.log') print('self.filefmt', filedir, filefmt) # 获得父目录的文件夹路径 _dir = os.path.dirname(filefmt) try: # 如果日志文件夹存在,则创建文件夹 if not os.path.exists(_dir): os.makedirs(_dir) except Exception: print(u"创建日志文件夹失败:日志文件夹路径:" + filefmt) # 创建日志记录器 logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) # 设置日志级别为 DEBUG # 创建文件处理器并设置编码 file_handler = logging.FileHandler(filefmt, encoding='utf-8', mode='a') file_handler.setLevel(logging.INFO) # 创建控制台处理器 console_handler = logging.StreamHandler() console_handler.setLevel(logging.INFO) # 控制台显示 INFO 及以上级别日志 # 创建日志格式,包括行号文件名 formatter = logging.Formatter('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S') # 将格式应用到处理器 file_handler.setFormatter(formatter) console_handler.setFormatter(formatter) # 将处理器添加到记录器 logger.addHandler(file_handler) logger.addHandler(console_handler) return logger前端每次点击,都要获取project,声明一次,后端的log有易于操作的方法吗
最新发布
11-21
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值