2

我有一个大约 1100 万行的巨大文本文件,我无法更改它,但我希望能够将其处理成可用的格式。它的基本结构如下:

Field1 : Type of data
Field2 : Values 

还有一个### 来标记文件中产品的开始和结束(不过,不确定这对我有帮助)

数据中包含大约 200,000 个独特的产品,以及与之相关的所有数据。Field1 值将重复(例如产品、价格、描述),并且值将不同以识别产品的属性。我将制表符分隔的文件导入 Access 并使用 SQL 来提取我需要的数据(所有产品的完整列表),但是能够进一步处理它并将所有部分列为一列会非常有帮助,然后通过说价格,描述等

我运行以提取产品的查询是:

select 
Field1, 
Field2 
from Index 
where Field1 = 'PRODUCT';

这给了我所有产品的列表

我不确定扩展上述内容是否是正确的方法,就好像我将其扩展为一样(请原谅语法,我必须在 SQL 上进行一次 bash 才能做到这一点)

select 
Field1, 
Field2 
from Index 
where Field1 = 'PRODUCT'
and Field1 = 'PRICE';

(如果我让它工作,我相信它不会)我将处于与我刚刚得到的大致相同的位置

Product
Price
Product
Price
x200000

我想做的是:

Product   Price    Description
11111      1.11     This is part 1
11112      1.12     This is part 2

我确实寻找过类似的例子,但我猜人们习惯于使用更好的输入文件......哦,从我看到的情况来看,SSIS 可能是关键?同样,从来没有玩过它,但对它来说是全新的,并且想看看这是否可以通过 SQL 实现。

非常感谢

例子 :

###
PRODUCT A1000102
SHORT_DESC  SMALL COG
PRICE   1.15
RANDOM_ASSOCIATED   B
###
PRODUCT A1000103
SHORT_DESC  MEDIUM COG
PRICE   1.18
RANDOM_ASSOCIATED   B
ROTATION    YES
###
PRODUCT A1000104
SHORT_DESC  L COG
PRICE   1.15
RANDOM_ASSOCIATED   2
###
PRODUCT A1000105
SHORT_DESC  TITANIUM COG
PRICE   4.12
RANDOM_ASSOCIATED   B
###
PRODUCT A1000106
SHORT_DESC  SMALL TITANIUM COG
PRICE   1.15
RANDOM_ASSOCIATED   A
COLOUR  BLUE
###
PRODUCT A1000107
SHORT_DESC  SMALL COG
PRICE   1.15
RANDOM_ASSOCIATED   C
COUNTRY SWISS
###
PRODUCT A1000108
SHORT_DESC  SMALL COG
PRICE   1.15
RANDOM_ASSOCIATED   X
WEIGHT  9.54KG
###
4

1 回答 1

0

这是我的建议:首先,使用批量插入将数据加载到 SQL 表中。然后使用 SQL 查询以您可能喜欢的辅助表的任何格式提取数据。

为什么我建议这个:

  1. 如果加载原始数据时出现错误,出于某种原因,您可以隔离并修复它们。
  2. 如果您在查看数据后改变了对数据结构的想法,只需更改查询即可。
  3. 如果您需要重复该过程,您可以将所有内容保存在 t-sql 语句中以供以后运行或修改。
  4. 如果你有一台多处理器机器,数据库应该最大限度地利用资源。

如果您需要在加载的表中维护行顺序,那么您可以使用视图来做到这一点。创建表如下:

create table DirtyData (
    DirtyData_id int identity(1,1),
    KeyNamevarchar(255),
    Value varchar(255)
);

create view v_DirtyData as
    select KeyName, Value
    from DirtyData;

然后批量插入到视图中,而不是直接插入到表中。id 将被单调分配。

于 2012-05-21T13:31:54.353 回答