我有一个Magento数据库,我想在其中搜索特定的string/pattern
。
但数据库的大小太大,所以我无法将数据库导出到.sql
文件然后搜索到该文件(编辑器甚至Geany崩溃打开这么大的文件)。
那么如何通过仅使用命令行和MySQL数据库凭证来搜索数据库以获得[string / pattern]和显示fulltext
信息的完美匹配?
我尝试了以下命令,但它需要username
作为-u[USERNAME]
,同时它不会显示完整查询或导致终端窗口。
mysqldump -p[PASSWORD] [DATABASE] --extended=FALSE | grep [pattern] | less -S
任何人都有这方面的解决方案吗?
答案 0 :(得分:0)
您可以首先登录http://dev.mysql.com/doc/refman/5.7/en/connecting.html
中指定的MySQL CLImysql --host=localhost --user=myname --password=mypass mydb
因此,您可以使用查询命令查找模式。如果您知道要搜索的表格,例如列,则可以轻松完成。 SELECT语句是这样的:
SELECT column FROM table WHERE column LIKE '%pattern%';
http://dev.mysql.com/doc/en/select.html
如果您不知道该表的名称,可以列出所有并尝试按意义查找。
SHOW TABLES;
答案 1 :(得分:0)
使用更好的代码进行编辑
你没有说这是否是一次性的,但这将检查模式中的所有表的值。
首先在您的主目录中设置一个名为.my.cnf的文件,其中包含以下内容,并将其权限更改为700(用您的用户名和密码替换[USERNAME]和[PASSWORD]。
[client]
user=[USERNAME]
password="[PASSWORD]"
然后执行以下操作(用数据库和检查字符串替换[DATABASE]和[CHECKSTRING])
mysql [DATABASE] --silent -N -e "show tables;"|while read table; do mysql [DATABASE] --silent -N -e "select * from ${table};"|while read line;do if [[ "${line}" == *"[CHECKSTRING]"* ]]; then echo "${table}***${line}";fi;done;done
如果检查51584,结果将类似于
test_table***551584,'column 2 value','column 3 value'
test_table5***'column 1 value',251584,'column 3 value'
如果您想知道哪个列具有该值,请从INFORMATION_SCHEMA.COLUMNS中选择并添加另一个嵌套。
mysql [DATABASE] --silent -N -e "show tables;"|while read table; do mysql [DATABASE] --silent -N -e "select column_name from information_schema.columns where table_schema='[DATABASE]' and table_name = '${table}';"|while read column; do mysql [DATABASE] --silent -N -e "select ${column} from ${table};"|while read line;do if [[ "${line}" == *"[CHECKSTRING]"* ]]; then echo "${table}***${column}***${line}";fi;done;done;done
如果检查51584,结果将类似于
test_table***column1***551584
test_table5***column2***251584
答案 2 :(得分:0)
首先,您需要通过以下命令使用正确的用户名和密码登录数据库。
sudo mysql -u根-p
然后检查要在其中进行操作的数据库。 例如。
SHOW DATABASES;
使用测试;
现在您的数据库已准备就绪,可以通过终端进行操作。在这里,我假设我的数据库名称是“ Test”。
现在可以使用以下命令进行字符串/模式匹配,或点击链接http://www.mysqltutorial.org/mysql-regular-expression-regexp.aspx。
选择 column_list 从 table_name 哪里 string_column REGEXP模式;