首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空白在从shell/命令提示符运行MySQL脚本时更改分隔符

问空白在从shell/命令提示符运行MySQL脚本时更改分隔符
EN

Stack Overflow用户
提问于 2019-11-18 00:58:11
回答 1查看 493关注 0票数 6

我在Windows机器上使用MySQL innodb version 5.7.10 'MySQL Community Server (GPL)'。如果我从MySQL工作台运行它,下面的脚本运行得很好:

代码语言:javascript
复制
DROP PROCEDURE IF EXISTS procedure1;

DELIMITER //

CREATE PROCEDURE procedure1(IN pageSize BIGINT) 
BEGIN
    SELECT * FROM table1 LIMIT pageSize;
END //

DELIMITER ;     -- note that there is an extra tab char here

DROP PROCEDURE IF EXISTS procedure2;

DELIMITER //

CREATE PROCEDURE procedure2() 
BEGIN
    SELECT * FROM table2;
END //

DELIMITER ;

但是,如果将脚本复制到schema.sql并从Windows命令提示符运行它:

代码语言:javascript
复制
mysql> c:\release\ver1\schema.sql

我得到以下错误:

您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以确定在“划界器//”附近使用的正确语法。

这个错误是因为制表符字符,如果我删除选项卡,它将运行良好。

我还尝试在Linux (MyQSL innodb version 5.7.25)上运行它,并得到了相同的错误:

代码语言:javascript
复制
mysql> source /home/ubuntu/release/ver1/schema.sql

注意:我尝试用几个(\t)白空格字符替换选项卡 char ,并且空格很好.只有选项卡字符才能更改分隔符。

我在开发环境中使用MySQL工作台,但是对于测试和Prod环境,我只是使用来自Linux的MySQL .这个错误已经抓住了我很多次,因为通过了Dev环境的脚本在Test中失败了,而且每次我都必须记住返回并从脚本中删除选项卡。

是否存在修复此问题或将MySQL配置为忽略选项卡字符的问题?

EN

回答 1

Stack Overflow用户

发布于 2019-11-29 21:32:24

有些像GrepWin这样的程序可以很容易地替换文件中的字符。但是,如果您想要自动化的东西,我建议您设置一个网钩,并有一个命令来替换下面的所有选项卡,每次按下模式时执行。

代码语言:javascript
复制
sed -i.bak $'s/\t*//g' schema.sql
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58906719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档