好的,我正在学习 SQL,刚刚安装了 SQL Server。我已经阅读了有关外部联接和内部联接的信息,但不确定两者是否是我想要的。基本上,我想重建一个已“切碎”成 5 个较小文本文件的文本文件。所有 5 个文本文件中的列都是相同的,例如姓名、年龄、电话号码等。唯一的区别是它们具有不同数量的数据行。
我想做的是将每个文件中的数据“附加”到一个“巨型文件”中。我应该创建一个包含所有数据的表,还是只创建一个视图?那么,我该如何实现这个......我使用联合吗?任何指导将不胜感激,谢谢。
好的,我正在学习 SQL,刚刚安装了 SQL Server。我已经阅读了有关外部联接和内部联接的信息,但不确定两者是否是我想要的。基本上,我想重建一个已“切碎”成 5 个较小文本文件的文本文件。所有 5 个文本文件中的列都是相同的,例如姓名、年龄、电话号码等。唯一的区别是它们具有不同数量的数据行。
我想做的是将每个文件中的数据“附加”到一个“巨型文件”中。我应该创建一个包含所有数据的表,还是只创建一个视图?那么,我该如何实现这个......我使用联合吗?任何指导将不胜感激,谢谢。
您需要考虑使用UNION
.
SELECT *
FROM TABLE1
UNION
SELECT *
FROM TABLE2
我只会创建一个视图——不需要存储表,尤其是在数据发生变化时。
除了合并五个文件的直接目标之外,您还希望文本文件中包含的数据通常可用于更灵活的分析。
如果您需要将其他数据与文本文件中的数据合并,您可能需要这样做的一个示例。(如果不是这种情况,那么 Oded 是对的,你应该简单地使用logparser或Visual Log Parser。)
由于您的文本文件都包含相同的列,您可以将它们插入到一个表中*。
*一旦您将数据放入表中,您可以考虑在表上创建视图,但首先您可能只运行一些即席查询。
**请注意,可以通过其他方式完成第 2 步。或者,您可以以编程方式构造和发出您的 INSERT 语句。
上述每个步骤的示例都包含在下面,可以在以下位置找到经过测试的示例:http ://sqlfiddle.com/#!6/432f7/1
-- 1.
CREATE TABLE mytable
(
id int identity primary key,
person_name varchar(200),
age integer,
tel_num varchar(20)
);
-- 2. or look into BULK INSERT option https://stackoverflow.com/q/11016223/42346
INSERT INTO mytable
(person_name, age, tel_num)
VALUES
('Jane Doe', 31, '888-888-8888'),
('John Smith', 24, '888-555-1234');
-- 3.
CREATE UNIQUE INDEX mytable_age_idx ON mytable (age);
-- 4.
SELECT id, person_name, age, tel_num
FROM mytable
WHERE age < 30;