Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ansible中mysql插入/更新请求的转义字符串值_Mysql_Insert_Ansible_Escaping - Fatal编程技术网

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

ansible中mysql插入/更新请求的转义字符串值,mysql,insert,ansible,escaping,Mysql,Insert,Ansible,Escaping,我需要创建ansible任务,将字符串值插入数据库。问题是字符串值可能包含各种空格、引号等 我将大致这样做: - name: Insert record command: mysql db_name -e "INSERT INTO table(column) VALUES ('{{ the_value }}');" _value变量包含字符串,但正如我提到的,其中有各种各样的空格和引号。所以,它应该逃脱 标准的ansiblequote过滤器在这里可能不合适,因为它转义要在shell命令中使

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

我将大致这样做:

- name: Insert record
  command: mysql db_name -e "INSERT INTO table(column) VALUES ('{{ the_value }}');"
_value
变量包含字符串,但正如我提到的,其中有各种各样的空格和引号。所以,它应该逃脱

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


这里有一些类似的问题:,但这无助于解决转义问题。

我没有找到合适的筛选器,所以我使用了稍微不同的方法。首先,我将数据保存到运行数据库的主机上的一个文件中,然后使用
LOAD\u file
sql函数

大概是这样的:

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

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

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

  • 要将数据保存到远程文件,您可以使用带有
    内容
    参数的
    复制
    模块


您是否关心
ansible playbook
呼叫中的\u值?如果是这样的话,你能用空间负载值的缩写版本发布那个调用吗?@webjujuju我是ansible新手,所以我不知道_值
变量将如何获得它的值。它的值将从一个文件中读取,该文件应该包含一些配置文件。只需将此文件的全部内容保存到数据库中。