如何使用SQL将表拼接在一起?

时间:2013-01-15 19:06:09

标签: sql sql-server sql-server-2012

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

我想做的是将每个文件中的数据“追加”到一个“超级文件”中。我应该创建一个包含所有数据的表,还是只创建一个视图?然后,我该如何实现这个...我使用union吗?任何指导都将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:1)

您需要考虑使用UNION

SELECT * 
FROM TABLE1 
UNION
SELECT * 
FROM TABLE2

我只想创建一个视图 - 不需要存储表,特别是如果数据发生变化。

答案 1 :(得分:1)

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

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

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

  1. 发出定义表格的CREATE语句
  2. 将数据插入新创建的表**
  3. 在可能经常在查询谓词中使用的字段上创建索引
  4. 撰写查询或创建视图以提供所需的数据
  5. *将数据放入表格后,您可以考虑在表格上创建视图,但要开始,您可能只是运行一些即席查询。

    **请注意,可以在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;