簡體   English   中英

將文本從bash腳本插入mysql數據庫並丟失格式

[英]Insert text from bash script to mysql database and losing format

我編寫了一個腳本,該腳本使用rsync運行備份,並將rsync的輸出插入數據庫。 除一件小事外,它運作良好。 數據庫中的文本是一行,並且沒有“新行”一堆空格或制表符。 但是,如果我將查詢寫到屏幕上,就可以了。 它看起來我想要在數據庫單元格。

任何人都可以幫助解決這個問題嗎?

這是腳本:

#!/bin/bash

DATUM=$(date +%Y-%m-%d)
IDO=$(date +%H:%M:%S)
LOG_FAJL="/media/2TB/MENTES_PC/log/"$DATUM"_"$IDO"_rsync_2TB.log"
LOG_FAJL_SED="/media/2TB/MENTES_PC/log/"$DATUM"_"$IDO"_rsync_2TB_SED.log"
CEL="/media/BACKUP_2TB/"
FORRAS="/media/2TB/"
KIZARAS1="--exclude='/media/2TB/lost+found/'" -- exclude='/media/2TB/.Trash-1000/'
DB_USER="user"
DB_PASSWORD="secret"
DB="xx"
TABLA="table"

if [ ! -f "$LOG_FAJL" ];
then
    printf "%b"     "\\\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t##########################################" > "$LOG_FAJL"  # more fancy header...    
fi
printf "%b" "\\n\\n\\n   A mentés készült: $(date +%Y-%m-%d_%H:%M:%S)  \\n" >> "$LOG_FAJL"
printf "%b" "   *************************************\\n" >> "$LOG_FAJL"
KEZDES=$(date +%s)
printf "%b" "\\n   "$FORRAS" mentése ide: "$CEL >> "$LOG_FAJL"
printf "%b" "\\n   ==========================================\\n\\n" >> "$LOG_FAJL"
rsync -azvh --delete "$KIZARAS1" --stats --human-readable $FORRAS $CEL >> "$LOG_FAJL"
VEGE=$(date +%s)
ELTELT=$(($VEGE-$KEZDES))
printf "%b" "\\n\\n   A mentés tartott: " >> "$LOG_FAJL"
printf "%02dh:%02dm:%02ds" "$(($ELTELT/3600))" "$(($ELTELT%3600/60))"         "$(($ELTELT%60))"  >> "$LOG_FAJL"
printf "%b" "-ig\\n   ********************************" >> "$LOG_FAJL"

cat "$LOG_FAJL" | sed "s/'/\\\'/g" > "$LOG_FAJL_SED"
QUERY="INSERT INTO "$TABLA" (datum,ido,log) VALUES ('"$DATUM"','"$IDO"','"$(cat "$LOG_FAJL_SED")"');"
echo "$QUERY"
mysql -u$DB_USER -p$DB_PASSWORD $DB -e "$QUERY"

想知道您正在使用哪個應用程序查看插入的數據,Mysql Workbench,Squirrel等?

我懷疑換行符/回車符實際上在那里,只是該應用沒有顯示它們。

您可以使用mysqldump將數據提取到文件中,並查看換行符是否在輸出中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM