使用 bash 将变量中的多行字符串添加到 mysql
Add multi line string from variable into mysql with bash
我是 运行 一个 python 脚本,其中 returns 几行文本,我使用以下截断命令 tr
并想将其添加到我的数据库中.
我从这里开始:这会删除未格式化的行分隔符。
tr -d '' < long_text > unixfile.txt
然后我得到如下所示的输出:
Happy Birthday Whosebug
Happy Birthday to you
Happy Birthday Whosebug
我使用以下命令将其放入变量中:
lyrics=$(cat unixfile.txt)
mysql --user=USER --password=PASSWORD --database='DB' --execute='INSERT INTO `song_lyrics` (`id`, `song_id`, `lyrics`, `info`) VALUES ('"'$i'"', '"'$i'"', '"$lyrics"', '0');'
ERROR 1064 (42000) at line 1:
似乎 MySQL 在三个不同的命令中看到了我的整个 3 行字符串(如上所示),因为 unixfile.txt
的输出出现在错误输出中。
可以使用以下方法解决此问题:
确保在文件中捕获长文本字符串,而不是变量 - 然后 re-capture file/variable。
lyrics=$(cat unixfile.txt)
mysql --user="$user" --password="$password" --database="$my_db" <<END
use my_db;
INSERT INTO song_lyrics (id, song_id, lyrics, info) VALUES ("$i", "$i", "$lyrics", '0');
END
此方法可确保正确传递变量。
唯一剩下的问题是各种标点符号
虽然这个 post 没有描述这个。
我是 运行 一个 python 脚本,其中 returns 几行文本,我使用以下截断命令 tr
并想将其添加到我的数据库中.
我从这里开始:这会删除未格式化的行分隔符。
tr -d '' < long_text > unixfile.txt
然后我得到如下所示的输出:
Happy Birthday Whosebug
Happy Birthday to you
Happy Birthday Whosebug
我使用以下命令将其放入变量中:
lyrics=$(cat unixfile.txt)
mysql --user=USER --password=PASSWORD --database='DB' --execute='INSERT INTO `song_lyrics` (`id`, `song_id`, `lyrics`, `info`) VALUES ('"'$i'"', '"'$i'"', '"$lyrics"', '0');'
ERROR 1064 (42000) at line 1:
似乎 MySQL 在三个不同的命令中看到了我的整个 3 行字符串(如上所示),因为 unixfile.txt
的输出出现在错误输出中。
可以使用以下方法解决此问题:
确保在文件中捕获长文本字符串,而不是变量 - 然后 re-capture file/variable。
lyrics=$(cat unixfile.txt)
mysql --user="$user" --password="$password" --database="$my_db" <<END
use my_db;
INSERT INTO song_lyrics (id, song_id, lyrics, info) VALUES ("$i", "$i", "$lyrics", '0');
END
此方法可确保正确传递变量。
唯一剩下的问题是各种标点符号 虽然这个 post 没有描述这个。