Helpers - компьютеры, интернет, программирование

импортировать csv в Redis с типом данных hash

awk -F, 'NR > 0{print "SET", "\"calc_"NR"\"", "\""$0"\"" }' files/calc.csv | unix2dos | redis-cli --pipe

Я использую приведенную выше команду для импорта CSV-файла в базу данных Redis со строковым типом данных. Что-то вроде:

set cal_1 product,cost,quantity
set cal_2 t1,100,5

Как импортировать как хеш-тип данных с именем поля как rowcount , ключом как заголовком столбца, значением как значением столбца в awk.

HMSET calc:1 product "t1" cost 100 quantity 5
HMSET calc:2 product "t2" cost 500 quantity 4

Входной файл Пример:

product    cost    quantity
 t1         100      5
 t2         500      4
 t3         600      9

Могу ли я получить этот результат от awk для каждой строки, присутствующей в файле csv,

HMSET calc_'row no' 1-я строка 1-е значение столбца текущая строка 1-е значение столбца 1-я строка 2-е значение столбца текущая строка 2-е значение столбца 1-я строка 3-е значение столбца текущая строка 3-е значение столбца

поэтому для приведенного выше примера

HMSET calc_1 product t1 cost 100 quantity 5
HMSET calc_2 product t2 cost 500 quantity 4
HMSET calc_3 product t3 cost 600 quantity 9

для всех строк динамически?

29.12.2017

  • Я был бы рад помочь вам, но не могли бы вы просто уточнить свой вклад и ожидаемый результат, и я сделаю это для вас ;-) 29.12.2017
  • @Allan Я добавил образец ввода и вывода, пожалуйста, проверьте сейчас. ТИА 29.12.2017
  • И я не хочу запускать цикл for для получения данных, так как они будут огромными. 29.12.2017
  • Вы проверили мой ответ ниже? если вам нужно больше объяснений о awk, дайте мне знать 29.12.2017
  • @Allan Аллан, теперь я отредактировал свой вопрос с подробным требованием awk, можете ли вы проверить, пожалуйста? 29.12.2017

Ответы:


1

Вы можете использовать следующую команду awk:

awk '{if(NR==1){col1=$1; col2=$2; col3=$3}else{product[NR]=$1;cost[NR]=$2;quantity[NR]=$3;tmp=NR}}END{printf "[("col1","col2","col3"),"; for(i=2; i<=tmp;i++){printf "("product[i]","cost[i]","quantity[i]")";}print "]";}' input_file.txt

в вашем входном файле:

product    cost    quantity
 t1         100      5
 t2         500      4
 t3         600      9

он дает следующий вывод:

[(product,cost,quantity),(t1,100,5)(t2,500,4)(t3,600,9)]

введите здесь описание изображения

команды awk:

# gawk profile, created Fri Dec 29 15:12:39 2017

# Rule(s)

{
        if (NR == 1) { # 1
                col1 = $1
                col2 = $2
                col3 = $3
        } else {
                product[NR] = $1
                cost[NR] = $2
                quantity[NR] = $3
                tmp = NR
        }
}

# END rule(s)

END {
        printf "[(" col1 "," col2 "," col3 "),"
        for (i = 2; i <= tmp; i++) {
                printf "(" product[i] "," cost[i] "," quantity[i] ")"
        }
        print "]"
}
29.12.2017
  • Нет, я думаю, вопрос не ясен. Я хочу импортировать файл в базу данных Redis и получить ожидаемый результат, выбрав из Redis. Не напрямую в csv. 29.12.2017
  • И это был просто пример ввода, я не буду знать точные имена столбцов или количество 29.12.2017
  • Понятно... Я совсем не эксперт по redis, извините, но если вам нужна помощь по поводу awk, я могу вам помочь :-) 29.12.2017
  • Спасибо за помощь :) сейчас выложу если потребуется еще раз. 29.12.2017
  • Новые материалы

    Интуитивное понимание тензоров в машинном обучении
    Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

    Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
    Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

    Почему объяснимость так важна прямо сейчас?
    По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

    Анимированный математический анализ
    Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

    Создание простого слайдера изображений с помощью JavaScript
    Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

    Создание базы данных с помощью супергероя «Python»
    В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

    ИИ для чайников: руководство для начинающих по пониманию будущего технологий
    Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..