使用 ansible 将数据插入 mysql 表
Insert data into mysql tables using ansible
应该有一些体面的方法来使用 ansible 来处理 mysql 数据库,例如将数据插入表中或对 mysql db 上的 运行 的任何命令。
我知道有一些模块可以创建数据库、管理复制、用户和变量:
mysql_db
- 从远程主机添加或删除 MySQL 数据库。
mysql_replication
(E) - 管理 MySQL 复制
mysql_user
- 在 MySQL 数据库中添加或删除用户。
mysql_variables
- 管理 MySQL 全局变量
我的用例场景是,我已经在 ubuntu 上安装了 mysql-server
并成功创建了数据库,现在我必须将数据插入表中,想知道是否有办法实现通过 ansible.
您可以使用 mysql_db 模块。它的state:
参数的值为present
、absent
、dump
、import
。如果设置为 import
,则可以使用 target:
参数指示要读取的转储文件在远程主机上的位置。支持未压缩的 SQL 文件 (.sql) 以及 bzip2 (.bz2) 和 gzip (.gz) 压缩文件。
# Copy database dump file to remote host and restore it to database 'my_db'
- copy: src=dump.sql.bz2 dest=/tmp
- mysql_db: name=my_db state=import target=/tmp/dump.sql.bz2
解决方案一:
我认为您错过了 mysql_db
模块的导入功能。您可以使用 import
作为参数来加载模式和数据,并给它一个文件来加载 target
来自 Ansible 文档的示例:
# Copy database dump file to remote host and restore it to database 'my_db'
- copy: src=dump.sql.bz2 dest=/tmp
- mysql_db: name=my_db state=import target=/tmp/dump.sql.bz2
方案二:
如果 mysql_db 没有提供您需要的所有选项和灵活性,您可以将 mysql
程序与 shell
.
结合使用
- name: Import DB
shell: mysql db_name < dump.sql
以上将 dump.sql
文件加载到数据库 db_name
。有关更多选项,请参阅 mysql
程序手册:man mysql
方案三:
mysqlimport
具有 command
模块的实用程序:
- name: Import DB
command: mysqlimport [options] db_name textfile1 [textfile2 ...]
应该有一些体面的方法来使用 ansible 来处理 mysql 数据库,例如将数据插入表中或对 mysql db 上的 运行 的任何命令。
我知道有一些模块可以创建数据库、管理复制、用户和变量:
mysql_db
- 从远程主机添加或删除 MySQL 数据库。mysql_replication
(E) - 管理 MySQL 复制mysql_user
- 在 MySQL 数据库中添加或删除用户。mysql_variables
- 管理 MySQL 全局变量
我的用例场景是,我已经在 ubuntu 上安装了 mysql-server
并成功创建了数据库,现在我必须将数据插入表中,想知道是否有办法实现通过 ansible.
您可以使用 mysql_db 模块。它的state:
参数的值为present
、absent
、dump
、import
。如果设置为 import
,则可以使用 target:
参数指示要读取的转储文件在远程主机上的位置。支持未压缩的 SQL 文件 (.sql) 以及 bzip2 (.bz2) 和 gzip (.gz) 压缩文件。
# Copy database dump file to remote host and restore it to database 'my_db'
- copy: src=dump.sql.bz2 dest=/tmp
- mysql_db: name=my_db state=import target=/tmp/dump.sql.bz2
解决方案一:
我认为您错过了 mysql_db
模块的导入功能。您可以使用 import
作为参数来加载模式和数据,并给它一个文件来加载 target
来自 Ansible 文档的示例:
# Copy database dump file to remote host and restore it to database 'my_db'
- copy: src=dump.sql.bz2 dest=/tmp
- mysql_db: name=my_db state=import target=/tmp/dump.sql.bz2
方案二:
如果 mysql_db 没有提供您需要的所有选项和灵活性,您可以将 mysql
程序与 shell
.
- name: Import DB
shell: mysql db_name < dump.sql
以上将 dump.sql
文件加载到数据库 db_name
。有关更多选项,请参阅 mysql
程序手册:man mysql
方案三:
mysqlimport
具有 command
模块的实用程序:
- name: Import DB
command: mysqlimport [options] db_name textfile1 [textfile2 ...]