mysql - 如何使用 ruby​​ 修改 .sql 文件?

标签 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_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)....
.....
.....

有什么简单的方法可以实现吗?

最佳答案

您可以使用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

关于mysql - 如何使用 ruby​​ 修改 .sql 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27119234/

相关文章:

ruby-on-rails - `status: :ok` 在 `render json:` (Rails) 中有什么作用

mysql - SQL分组并按最大字段获取行

php - 简单的 PHP 到 Excel 导出错误的值

php - 通过单击列名称对行进行排序

java - Android SQLite 查询从时间字符串列获取不同的年份值

sql - 如何停止 Sql Server 的用户实例? (Sql Express 用户实例数据库文件被锁定,即使在停止 Sql Express 服务后)

ruby-on-rails - 如何在 Rails 中的渲染 Action 中传递参数

mysql - 第二个表的 SQL SELECT 和 COUNT

sql - 如何将此 SQL 转换为使用连接?

ruby-on-rails - 几天前的 Rails 状况?