1

好的,我正在学习 SQL,刚刚安装了 SQL Server。我已经阅读了有关外部联接和内部联接的信息,但不确定两者是否是我想要的。基本上,我想重建一个已“切碎”成 5 个较小文本文件的文本文件。所有 5 个文本文件中的列都是相同的,例如姓名、年龄、电话号码等。唯一的区别是它们具有不同数量的数据行。

我想做的是将每个文件中的数据“附加”到一个“巨型文件”中。我应该创建一个包含所有数据的表,还是只创建一个视图?那么,我该如何实现这个......我使用联合吗?任何指导将不胜感激,谢谢。

4

2 回答 2

1

您需要考虑使用UNION.

SELECT * 
FROM TABLE1 
UNION
SELECT * 
FROM TABLE2

我只会创建一个视图——不需要存储表,尤其是在数据发生变化时。

于 2013-01-15T19:06:57.983 回答
1

除了合并五个文件的直接目标之外,您还希望文本文件中包含的数据通常可用于更灵活的分析。

如果您需要将其他数据与文本文件中的数据合并,您可能需要这样做的一个示例。(如果不是这种情况,那么 Oded 是对的,你应该简单地使用logparserVisual Log Parser。)

由于您的文本文件都包含相同的列,您可以将它们插入到一个表中*。

  1. 发出定义表的 CREATE 语句
  2. 将数据插入新创建的表中**
  3. 在查询谓词中可能经常使用的字段上创建索引
  4. 编写查询或创建视图以提供您需要的数据

*一旦您将数据放入表中,您可以考虑在表上创建视图,但首先您可能只运行一些即席查询。

**请注意,可以通过其他方式完成第 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;
于 2013-01-15T19:21:51.883 回答