以某种方式使用 schema.ini 链接的 csv 中的主键?

发布于 2024-09-27 00:54:35 字数 124 浏览 6 评论 0原文

由于多种原因,我必须在 sqlexpress 数据库中使用链接的 csv 文件。 尽管数据会根据当前登录情况定期更改,但 Col1 始终是唯一的。

有没有办法使用 schema.ini 或其他方式以某种方式设置为主键?

For a number of reasons I have to use a linked csv file in a sqlexpress database.
Col1 is always unique, although the data changes periodically, based on current logins.

Is there a way to set as a primary key in some manner using the schema.ini or some other way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寂寞陪衬 2024-10-04 00:54:35

您不能在 schema.ini 中定义主键或任何其他索引。

您也不能拥有一个大胆地从链接服务器中选择所有数据并在其上定义唯一索引的视图,因为该视图必须具有架构绑定才能启用索引,而这不允许交叉数据库对象。

唯一可能的解决方案似乎创建一个用户定义的函数来选择将所有数据放入带有主键的表中:

create function dbo.csv_primary()
returns @result table (col1 int not null primary key, col2 varchar(255))
as
begin
  insert into @result(col1, col2)
  select col1, col2 from CSVServer.[folder]..[file#csv];

  return;
end;

多步表值函数显然会降低性能,但是查询 csv 文件时会获得多少性能。

You can't have a primary key or any other index defined in schema.ini.

You also can't have a view that boldly selects all data from the linked server and defines a unique index on it, because the view must be with schemabinding to enable indices, and that's not allowed for cross-database objects.

The only possible solution seems to be creating a user-defined function that selects all data into a table with a primary key:

create function dbo.csv_primary()
returns @result table (col1 int not null primary key, col2 varchar(255))
as
begin
  insert into @result(col1, col2)
  select col1, col2 from CSVServer.[folder]..[file#csv];

  return;
end;

A multi-step table-valued function will obviously kill performance, but then, how much performance do you get when querying a csv file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文