csv文件清洗与导入neo4j遇到的问题
发布于 5 年前 作者 crazyyanchao 2283 次浏览 来自 问答

一、导入节点的时候报错,数据格式出现问题,无法处理\符号 xm库数据csv导入报错.jpg

二、导入node.csv与relationships.csv时都遇到的问题 导入关系报错.png

4 回复

数据包含反斜杠如何处理?

原始数据:
333 S Twin Oaks Valley RD #\"",San Marocs,CA,92078;
333 S Twin Oaks Valley RD #\""
按照CSV支持格式处理之后的数据如下两种中包含反斜杠的时候导入失败
成功:
"333 S Twin Oaks Valley RD #"""",San Marocs,CA,92078;"
"333 S Twin Oaks Valley RD #"""""
失败:
"333 S Twin Oaks Valley RD #\"""",San Marocs,CA,92078;"
"333 S Twin Oaks Valley RD #\"""""

@crazyyanchao 建议在做导入之前先把这类问题批量清洗掉,清洗成标准csv格式即可

一、对已经生成好的CSV文件做清洗:

# 1、打印csv文件的某一行
sed -n '2p' student.txt
# 2、删除csv文件的某一行(删除第一行到第二行)(删除之后打印)
sed '1,2d' test
# 3、打印csv文件行数
sed -n '$=' test1.sh
# 4、awk抽取包含某字段的整行日志
awk '{if($0~"listAuths") print}' xxx.log
# 5、删除包含某字符串的行(直接从文件删除)
sed -i '/listAuths/d' xxx
# 6、awk抽取包含某字段的整行日志并查看行号
awk '{if($0~"listAuths") print  FNR,$0}' xxx.log
# 7、删除指定的行
sed -i '8d' xxx	sed -i '6,8d' xxx
# 8、csv文件中删除每一行的反斜杠\符号
sed -i 's/\\//g' node.csv

二、将node.csv中第一列为空的数据删除:

#!/usr/bin/env bash
file=node.csv
temp_file=temp_node
awk -F , '$1 !~ /^$/{print $0}' $file  > $temp_file
cp -rp  $temp_file $file
rm -rf $temp_file

三、将relationships.csv第一列或者第二列为空的数据删除:

#!/usr/bin/env bash
file=relationships.csv
temp_file=temp_relation
awk -F , '$1 !~/^$/ && $2 !~/^$/{print $0}' $file  > $temp_file
cp -rp  $temp_file $file
rm -rf $temp_file

图二显示的死锁问题,通过两处修改没有再出现: 1、将提交数由10000修改为1000; 2、将所有load.cql的加载脚本中涉及match和merge的部分只设置一个标签,例如merge (n:Label1:Label2)修改为 merge (n:Label2)

回到顶部