Преобразуйте XML в операторы INSERT SQL с помощью командной строки

В случае сбоя программы дампа с подходящими параметрами дампа вы всегда можете что-то сколотить, используя как hexdump , так и xdd , а затем объединить вывод с помощью вставки. Это некрасиво, но с использованием оболочки, поддерживающей подстановку процессов (подойдет bash ):

mkfifo fifo
echo -e '\x00\x01\x02\x03' |
  tee fifo |
  paste -d' ' \
    <(hexdump -v -e '1/1 "%_ad: "' -e '4/1 "%02X "' -e '1/1 " :\n"') \
    <(xxd -b -c 4 fifo | cut -d' ' -f 2-)

Вывод:

0: 00 01 02 03 : 00000000 00000001 00000010 00000011  ....
4: 0A          : 00001010                             .
1
25.10.2014, 17:58
1 ответ

с XMLLINT с использованием LibxML версии 20708:

Название корневого узла «что-то»: XMLLINT --xPath "Имя ()" file.xml

Текст "lol": XMLLINT --xPath »// * / * / Text () "file.xml


скрипт sql.sh:

#!/bin/bash

file="$1"
table=$(xmllint --xpath "name()" "$file")
value=$(xmllint --xpath "//*/*/text()" "$file")

cat << EOF
INSERT INTO \`${table}\`
VALUES
(${value})
EOF
$ ./sql.sh file.xml

Output :

INSERT INTO `something`
VALUES
(lol)
1
27.01.2020, 23:51

Теги

Похожие вопросы