【问题标题】:How to handle SQL query having single quotes in Ansible如何在 Ansible 中处理带有单引号的 SQL 查询
【发布时间】:2021-10-22 21:05:26
【问题描述】:

我希望使用 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 成功。

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

【问题讨论】:

  • 你试过shell模块而不是command模块吗?
  • 你想用单引号存储记录吗?如果是,那么您需要使用转义字符。
  • @Arbab Nazar 仅仅将模块更改为外壳并没有帮助。您是否建议进行更具体的更改?

标签: mysql sql ansible string-formatting


【解决方案1】:

我发现以下单引号和双引号以及转义字符的工作方式。

- 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 pluginsquery module

【讨论】:

    猜你喜欢
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 2017-06-05
    相关资源
    最近更新 更多