将.csv文件插入Redis

eh57zj3b  于 12个月前  发布在  Redis
关注(0)|答案(1)|浏览(90)

我需要将我的.tsv文件中的信息插入Redis。我使用的是Google Collab,我没有使用Redis Python库,但是我使用的是我已经安装的客户端(出于义务):

%%bash
redis-cli ping

个字符
问题是,我需要插入.tsv文件中的信息以及123663条注解中的信息,如下所示:

Id  CreationDate    PostId  Score   Text    UserDisplayName UserId
1   2015-10-29T16:31:36.090 1   0   Más tarde añadiré la respuesta, pero si alguien quiere hacer los honores antes...       23
2   2015-10-29T18:03:06.780 1   1   ¡Excelente! Nuestra primera pregunta. :)        4


在寻找如何将其插入Redis时,我发现您可以在bash中使用awk命令,解析每一行并将其插入Redis。

%%bash
awk -F '\t' 'FNR > 1 {gsub(/[^[:alnum:][:space:]]/, "", $5); print "XADD Comments * Id "$1" CreationDate \""$2"\" PostId "$3" Score "$4" Text \""$5"\" UserDisplayName \""$6"\" UserId "$7"\n"}' Comments.tsv | redis-cli --pipe


如果有人想知道,它会给出这样的输出:

%%bash
awk -F '\t' 'FNR > 1 {gsub(/[^[:alnum:][:space:]]/, "", $5); print "XADD Comments * Id "$1" CreationDate \""$2"\" PostId "$3" Score "$4" Text \""$5"\" UserDisplayName \""$6"\" UserId "$7"\n"}' Comments.tsv | head
XADD Comments * Id 1 CreationDate "2015-10-29T16:31:36.090" PostId 1 Score 0 Text "Ms tarde aadir la respuesta pero si alguien quiere hacer los honores antes" UserDisplayName "" UserId 23

XADD Comments * Id 2 CreationDate "2015-10-29T18:03:06.780" PostId 1 Score 1 Text "Excelente Nuestra primera pregunta " UserDisplayName "" UserId 4

的字符串
我的问题是它以失败告终,只插入了总数中的103649条评论。而且,许多插入都给予了以下输出:

ERR wrong number of arguments for 'xadd' command.


我不知道是不是因为文本字段和特殊字符有问题,但我无法再清理它了。
我希望有人能告诉我如何修复它,或者是否有另一种方法来插入.tsv文件(或.csv,我也有),这是更简单或更好的。
非常感谢你提前和新年快乐!:)
何塞·阿德里安。

cs7cruho

cs7cruho1#

而不是让它固定,我已经想出了如何正确插入信息。

%%bash
redis-cli FT.CREATE commentsIndex ON HASH PREFIX 1 "comment:" SCHEMA \
  Id NUMERIC SORTABLE \
  CreationDate TEXT SORTABLE \
  PostId NUMERIC SORTABLE \
  Score NUMERIC SORTABLE \
  Text TEXT SORTABLE \
  UserDisplayName TEXT SORTABLE \
  UserId TEXT SORTABLE

字符串
输出量:

OK


然后我通过对. tsv的某些字段应用预处理来插入信息。

%%bash
awk -F '\t' 'FNR > 1 {
  gsub(/[^[:alnum:][:space:]]/, "", $5);
  gsub(/[^[:alnum:][:space:]]/, "", $6);

  $7 = ($7 == "") ? "nan" : $7;

  comment_id = "comment:" $1;
  print "FT.ADD commentsIndex "comment_id" 1.0 FIELDS Id "$1" CreationDate \""$2"\" PostId "$3" Score "$4" Text \""$5"\" UserDisplayName \""$6"\" UserId "$7"\n"
}' Comments.tsv | redis-cli --pipe


输出量:

All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 123329

相关问题