删除 SQL 文件中的列

发布于 2024-10-21 20:01:00 字数 316 浏览 4 评论 0原文

我有一个很大的 SQL 文件 (~ 200MB),其中包含大量 INSERT 指令:

insert  into `films_genres`
    (`id`,`film_id`,`genre_id`,`num`) 
    values 
    (1,1,1,1),
    (2,1,17,2),
    (3,2,1,1),
    ...

How can I remove orignoring columns id, num in the script ?

I have a big SQL file (~ 200MB) with lots of INSERT instructions:

insert  into `films_genres`
    (`id`,`film_id`,`genre_id`,`num`) 
    values 
    (1,1,1,1),
    (2,1,17,2),
    (3,2,1,1),
    ...

How could I remove or ignore columns id, num in the script?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

眼眸印温柔 2024-10-28 20:01:00

最简单的方法可能是完全插入到临时保留表中,然后将所需的列从保留表插入到实际表中。

insert  into `films_genres_temp`
    (`id`,`film_id`,`genre_id`,`num`) 
    values 
    (1,1,1,1),
    (2,1,17,2),
    (3,2,1,1),
    ...

insert into `films_genres`
    (`film_id`,`genre_id`)
    select `film_id`,`genre_id`
        from `films_genres_temp`

Easiest way might be to do the full insert into a temporary holding table and then insert the desired columns into the real table from the holding table.

insert  into `films_genres_temp`
    (`id`,`film_id`,`genre_id`,`num`) 
    values 
    (1,1,1,1),
    (2,1,17,2),
    (3,2,1,1),
    ...

insert into `films_genres`
    (`film_id`,`genre_id`)
    select `film_id`,`genre_id`
        from `films_genres_temp`
2024-10-28 20:01:00

创建表#MyTempTable(id int,film_idsmallint,genre_id int,num int)

插入#MyTempTable(idfilm_idgenre_id,<代码>num)
[此处数据]

insert intofilms_genres (film_id,genre_id) 从 #MyTempTable

下拉表 中选择 film_id,genre_id #MyTempTable

CREATE TABLE #MyTempTable (id int,film_id smallint, genre_id int, num int)

INSERT INTO #MyTempTable (id,film_id,genre_id,num)
[Data goes here]

insert into films_genres (film_id,genre_id) select film_id,genre_id from #MyTempTable

drop table #MyTempTable

開玄 2024-10-28 20:01:00

这个 Perl 一行代码应该可以做到这一点:

perl -p -i.bak -e 's/\([^,]+,/\(/g; s/,[^,]+\)/\)/g' sqlfile

它在适当的位置编辑文件,但创建一个扩展名为 .bak 的备份副本。

或者,如果您更喜欢 Ruby:

ruby -p -i.bak -e 'gsub(/\([^,]+,/, "("); gsub/, ")");' sqlfile

This Perl one-liner should do it:

perl -p -i.bak -e 's/\([^,]+,/\(/g; s/,[^,]+\)/\)/g' sqlfile

It edits the file in place, but creates a backup copy with the extension .bak.

Or if you prefer Ruby:

ruby -p -i.bak -e 'gsub(/\([^,]+,/, "("); gsub/, ")");' sqlfile
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文