好的,我正在学习SQL并且刚刚安装了SQL Server。我已经读过外连接和内连接但我不确定是否是我想要的。基本上,我想重建一个已被“切碎”成5个较小文本文件的文本文件。所有5个文本文件中的列都相同,例如姓名,年龄,电话号码等。唯一的区别是他们有不同数量的数据行。
我想做的是将每个文件中的数据“追加”到一个“超级文件”中。我应该创建一个包含所有数据的表,还是只创建一个视图?然后,我该如何实现这个...我使用union吗?任何指导都将不胜感激,谢谢。
答案 0 :(得分:1)
您需要考虑使用UNION
。
SELECT *
FROM TABLE1
UNION
SELECT *
FROM TABLE2
我只想创建一个视图 - 不需要存储表,特别是如果数据发生变化。
答案 1 :(得分:1)
除了您合并五个文件的直接目标之外,您似乎希望文本文件中包含的数据通常可用于更灵活的分析。
您可能需要这样做的一个示例是,您需要将其他数据与文本文件中的数据合并。 (如果不是这种情况,那么Oded是对的,你应该只使用logparser或Visual Log Parser。)
由于您的文本文件都包含相同的列,因此您可以将它们插入到一个表*中。
*将数据放入表格后,您可以考虑在表格上创建视图,但要开始,您可能只是运行一些即席查询。
**请注意,可以在other ways中完成第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;