gpt4 book ai didi

ruby - 在 Ruby 中读取和编辑数据库转储文件

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:38 24 4
gpt4 key购买 nike

我想将数据库转储导入新数据库,该数据库不包含旧数据库所具有的所有列。

因此,要忽略/删除这些列,我的想法是编辑 dump.sql。

如何在 ruby​​ 中读取和编辑 sql 文件?

转储创建:

pg_dump --data-only old_database > dump_data_12_3_2019.sql;

使用:

  • PostgreSQL 9.5
  • ruby 2.5.1

内部 sql 文件:

COPY public.images (id, file, created_at, updated_at, rotation) FROM stdin;
255 31265d7843.JPG 2018-11-15 09:05:43.37898 2018-11-15 09:05:43.37898 0
256 78e834e4e7.JPG 2018-11-15 09:05:43.571389 2018-11-15 09:05:43.571389 0
257 7b6662659b.JPG 2018-11-15 09:05:44.275989 2018-11-15 09:05:44.275989 0
215 6fe307f4b5.jpg 2018-10-15 11:08:59.42583 2018-10-15 11:12:25.284024 0

标题以 COPY 开头,列名在 ( ) 内,数据在下方,以空格分隔。

如何删除列旋转及其数据?

最佳答案

您必须通过删除列(在新数据库中不可用)和这些列的数据来“更新”原始 sql 文件。

只需逐行读取,根据您的逻辑修改它并写入其他文件。考虑一些行是列信息,其他行是数据。


path = '/tmp/source'
temp_file = Tempfile.new('output')
begin
File.open(path, 'r') do |file|
file.each_line do |line|
# change the line according your logic
temp_file.puts new_line
end
end
temp_file.close
ensure
temp_file.close
temp_file.unlink
end

之后,可以用pg commands恢复目标文件。 .

psql -U <username> -d <dbname> -1 -f <filename>.sql

pg_restore -U <username> -d <dbname> -1 <filename>.dump

关于ruby - 在 Ruby 中读取和编辑数据库转储文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55123395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com