如何使用查找值将记录插入SQL?

Pau*_*aul 7 sql sql-server excel sql-server-2008

脚本

我需要每天通过电子表格更新SQL 2008数据库(唯一可用的选项).格式非常基本,但可能有数百万条记录.Column1和Column3将具有许多预定义的重复值,已经被拉出到单独的表中.

电子表格示例

Column1 Column2 Column3
Apple   10      Red
Apple   20      Red
Apple   15      Blue
Apple   21      Green
Orange  10      Orange
Orange  7       Orange
Orange  9       Red
Orange  70      Blue
Orange  10      Blue
Run Code Online (Sandbox Code Playgroud)

数据库设置

我的数据库设置有三个单独的表:

//Lookup_Column1
id type
1  Apple
2  Orange

//Lookup_Column3
id type
1  Red
2  Blue
3  Green
4  Orange

//Main - this is what should be inserted, after Column1
//and Column2 are matched to their respective ID's
key Column1 Column2 Column3
1   1       10      1
2   1       20      1
3   1       15      2
4   1       21      3
5   2       10      4
6   2       7       4
7   2       9       1
8   2       70      2
9   2       10      2
Run Code Online (Sandbox Code Playgroud)

如何编写SQL以插入与查找表中的信息匹配的记录?我怎么能这样做:

INSERT INTO Main(Column1, Column2) VALUES ('Apple', 10, 'Red');
Run Code Online (Sandbox Code Playgroud)

对此:

INSERT INTO Main(Column1, Column2) VALUES (1, 10, 1);
//pulled from lookup tables, where Apple = 1 and Red = 1
Run Code Online (Sandbox Code Playgroud)

Aar*_*ron 7

你可以尝试这样的事情:

    INSERT INTO Main(Column1, Column2, Column3) VALUES 
    (
    (SELECT id FROM Lookup_Column1 WHERE type = 'Apple'),
    10, 
    (SELECT id FROM Lookup_Column3 WHERE type = 'Red')
    );
Run Code Online (Sandbox Code Playgroud)

没有任何容错,但只要您可以将电子表格值解析为SELECT语句,它就会起作用.