首页 > 解决方案 > 如何在 Ansible 中处理带有单引号的 SQL 查询

问题描述

我希望使用 Ansible 的命令模块触发 SQL INSERT 查询。

要插入数据库的数据存储在一个文件中,比如 tmpdata.txt

更多 tmpdata.txt

10.9.52.76:[u'12342 user1 -drwx file1','4433 user2 -drwx file2']

10.9.52.78:[u'12342 user1 -drwx file3','4433 user2 -drwx file2']

然后使用 Ansible 文件查找将 tmpdata.txt 的内容分配给名为 mydata 的 Ansible 变量。

然后我使用 Ansible 命令模块执行 SQL INSERT 语句来插入变量 mydata,该变量由于 SQL 数据的经典单引号问题而失败。

虽然我不确定处理数据是否有什么好的解决方案;我想从文件或变量中删除单引号应该有助于 SQL INSERT 成功。

谁能建议如何解决单引号问题?

标签: mysqlsqlansiblestring-formatting

解决方案


我发现以下单引号和双引号与转义字符一起工作的方法。

- name: CREATE {{ SQL_USER }}
  shell:
    cmd: "mysql -uroot -p{{ SQL_ROOT_PASSWORD }} -e\"CREATE USER IF NOT EXISTS '{{ SQL_USER }}'@'{{ SQL_IP }}' IDENTIFIED BY '{{ SQL_PASSWORD }}' REQUIRE SSL;\" -N -B"
  register: CREATE_USER

- name: STDOUT CREATE_USER
  debug: 
    msg: "{{ CREATE_USER.stdout_lines }}"

但我建议使用mysql 插件查询模块


推荐阅读