【问题标题】:replacing a country within an SQL insert with a list of countries to create multiple inserts用国家列表替换 SQL 插入中的国家以创建多个插入
【发布时间】:2019-11-26 09:30:43
【问题描述】:

我有多个 SQL 插入,我正在尝试通过更改 1 个单词(国家/地区)自动复制这些插入,从预定义的单词列表(国家/地区)填充。

insert into TABLE_1 (FIELD, VALUE, SITE_ID) values('WEBSITE,COUNTRY', 'abc.com,xxx',12345);

我有一个国家列表(大约 200 个),我希望将其复制到上述插入(以及许多其他插入)中

所以 - 结果应该是这样的:

insert into TABLE_1 (FIELD, VALUE, SITE_ID) values('WEBSITE,COUNTRY', 'abc.com,United Kingdom',12345);
insert into TABLE_1 (FIELD, VALUE, SITE_ID) values('WEBSITE,COUNTRY', 'abc.com,Sweden',12345);
insert into TABLE_1 (FIELD, VALUE, SITE_ID) values('WEBSITE,COUNTRY', 'abc.com,France',12345);
insert into TABLE_1 (FIELD, VALUE, SITE_ID) values('WEBSITE,COUNTRY', 'abc.com,Germany',12345);

...等等

我找到了一个 shell 脚本来为 1 个单词的实例执行此操作: sed -i 's/old-text/new-text/g' input.txt. ...但我猜我需要某种循环来遍历我的列表。而且我在外面(任何地方)都找不到这样的东西

提前感谢您的帮助

【问题讨论】:

  • 可以使用INSERT INTO ...(...). SELECT <fieldvaluesstoinsert> ... 进行多次插入,例如来自不同的表...一些列可能是常量,另一些可能来自其他表...
  • 这是 SQL 问题还是 shell 问题?
  • @SalmanA 这是一个关于我的 SQL 插入的 shell 问题
  • 国家/地区列表的存储位置/方式 - 在表格中?在一个文件中?非常不同的方法,取决于这个输入
  • @dash-o 我将处理 1 个(或 2 个)文本文件。大约 3k 行 - 其中一些将包含需要由国家/地区替换的 xxx 文本。希望能更好地解释我的问题

标签: sql shell unix


【解决方案1】:

希望下面的查询有所帮助。

 select * into #countries --all your countries

  DECLARE @i int = 0
 declare @c varchar(20)
 WHILE @i < 201 
 BEGIN
 SET @c =( select top country_name from #countries order by name desc)
 SET @i = @i + 1
insert into TABLE_1 (FIELD, VALUE, SITE_ID) values('WEBSITE,COUNTRY', 
'abc.com,'+@c,12345);
delete from #countries  where country_name=@c
/* your code*/
END

【讨论】:

  • 非常感谢您在这里的帮助。我正在处理一个包含大约 3,000 个插入语句的文本文档。因此,我的原始问题是:shell/unix 脚本。你认为你的上述解决方案会起作用吗?再次感谢...
猜你喜欢
  • 2022-06-15
  • 1970-01-01
  • 2014-12-19
  • 2023-03-15
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多