Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何用ruby修改.sql文件?_Mysql_Sql_Ruby On Rails_Ruby - Fatal编程技术网

Mysql 如何用ruby修改.sql文件?

Mysql 如何用ruby修改.sql文件?,mysql,sql,ruby-on-rails,ruby,Mysql,Sql,Ruby On Rails,Ruby,我通过mysqldump命令生成了一个.sql文件: system "mysqldump -u#{USERNAME} --password=#{PASSPORT} --extended-insert #{DATABASE} #{table_name} > init_#{table_name}.sql" .sql文件如下所示: ..... ..... LOCK TABLES `config_products` WRITE; /*!40000 ALTER TABLE `config_prod

我通过mysqldump命令生成了一个.sql文件:

system "mysqldump -u#{USERNAME} --password=#{PASSPORT} --extended-insert #{DATABASE} #{table_name} > init_#{table_name}.sql"
.sql文件如下所示:

.....
.....
LOCK TABLES `config_products` WRITE;
/*!40000 ALTER TABLE `config_products` DISABLE KEYS */;
INSERT INTO `config_products` VALUES (1,1000,30,54),(2,2000,30,56),(3,3000,30,51),(4,1000,30,54)....
.....
.....
所有数据都合并到一行中,但我希望它看起来像:

.....
.....
LOCK TABLES `config_products` WRITE;
/*!40000 ALTER TABLE `config_products` DISABLE KEYS */;
INSERT INTO `config_products` VALUES
    (1,1000,30,54),
    (2,2000,30,56),
    (3,3000,30,51),
    (4,1000,30,54)....
.....
.....

有什么简单的方法吗?

请查看此宝石一次,可能会对您有所帮助:


anbt sql格式化程序

您可以使用
gsub
,并使用
换行符
选项卡
和括号本身替换开口括号。
你应该在写作前或阅读时这样做

text = "INSERT INTO `config_products` VALUES (1,1000,30,54),(2,2000,30,56),(3,3000,30,51),(4,1000,30,54)...."

newtext = text.gsub(/\(/,"\n\t(")
#INSERT INTO `config_products` VALUES 
#        (1,1000,30,54),
#        (2,2000,30,56),
#        (3,3000,30,51),
#        (4,1000,30,54)....
更新 因为这是通过一个系统任务完成的,所以您可以在ruby控制台中完成,或者在某个地方编写一个助手方法,如果您打算经常使用它的话

def export_formatted_sql(DATABASE,table_name,USERNAME,PASSWORD)
    system "mysqldump -u#{USERNAME} --password=#{PASSPORT} --extended-insert #{DATABASE} #{table_name} > init_#{table_name}.sql"
    file    = File.open("init_#{table_name}.sql","r")
    newtext = file.read.gsub(/\(/,"\n\t(")
    file.close
    file    = File.open("init_#{table_name}.sql","w") # overwrite the existing file
    file.write newtext
    file.close
end

我找到了一个简单的方法。我们可以通过“sed”命令直接获取目标文件

system "mysqldump -u#{USERNAME} --password=#{PASSPORT} --extended-insert #{DATABASE} #{table_name} | sed 's/),/),\\'$'\\n/g'  > init_#{table_name}.sql"