我在SQL Server中有一个数据库。
整个数据库中的每个字段都是这样命名的:'F01,F02,F03...‘一直到'F25000’
使用这个数据库很困难,因为我必须通过字段中包含的数据来猜测字段是什么,或者必须在外部CSV文件中查找字段定义。
我有一个CSV文件,其中每个字段都定义了一个字母数字描述。
我是否可以创建一个名为"Fields“的表,然后将CSV文件中的Field和Description列添加到该表中?然后,我想在以后的查询中引用这个Fields表,其中列标题将被新创建的Fields表中的字母数字定义字段替换?我认为这一切都是可能的。
如何创建表并将csv文件的内容添加到该表中?CSV文件只包含两列:字段编号和描述。
那么我如何编写查询来引用我创建的fields表呢?我只想从数据库中的其他表中选择*,但用字段定义替换列标题。
发布于 2015-08-18 22:26:14
首先,将CSV文件加载到表中。这会有帮助的。
第二个问题更难解决。一种方法是获取所有现有的表(有25,000个字段,您就有很多表),并构造用于访问它们的视图。如下所示:
select 'create view v_' + t.table_name +
stuff((select cast(', ' + c.column_name + ' as [' + f.description + ']' as varchar(max))
from information_schema.columns c join
fieldsname f
on f.field = c.column_name
where c.table_name = t.table_name
for xml path (''), type
).value('', 'varchar(max)'
), 1, 1, ''
) as viewdef
from information_schema.tables t
where exists (select 1 from information_schema.columns where column_name like 'F[0-9]%');
(在调试之后),您可以运行生成的代码来获得每个表的视图,这将使您的工作更加轻松。
https://stackoverflow.com/questions/32074795
复制相似问题