Ansible中的mysql插入/更新请求的转义字符串值

我需要创建一个将字符串值插入数据库的ansible任务。问题在于字符串值可能包含各种空格,引号等。

我将大致执行以下操作:

- name: Insert record
  command: mysql db_name -e "INSERT INTO table(column) VALUES ('{{ the_value }}');"

the_value变量包含字符串,但是正如我所提到的,其中包含各种空格和引号。因此,应将其转义。

标准的quote过滤器在这里可能不合适,因为它转义了要在shell命令中使用的字符串,但是我不使用shell。

这里有一个类似的问题:Insert data into mysql tables using ansible,但这无助于解决转义问题。

china_lwj 回答:Ansible中的mysql插入/更新请求的转义字符串值

我找不到合适的过滤器,因此我使用了略有不同的方法。首先,我将数据保存到运行数据库的主机上的文件中,然后使用LOAD_FILE sql函数。

类似这样的东西:

- name: Insert record
  command: mysql db_name -e "INSERT INTO table(column) VALUES (LOAD_FILE('{{ path_to_data_file }}'));"

一些笔记。

  • LOAD_FILE函数可能特定于mysql,因此您可能必须对不同的数据库使用不同的函数/语法

  • 文件应保存在数据库运行的主机上(可能与此任务的远程主机不同)

  • 要将数据保存到远程文件,可以使用带有copy参数的content模块。

本文链接:https://www.f2er.com/3051501.html

大家都在问