【发布时间】:2020-11-09 00:36:46
【问题描述】:
我需要从 Excel 或 CSV 文件批量插入 SQL Server 数据。数据接近 100k 行。我正在使用 C#/.NET。在 Microsoft 文档中,我发现:
BULK INSERT Sales.Invoices
FROM '\\share\invoices\inv-2016-07-25.csv'
WITH (FORMAT = 'CSV'
, FIRSTROW=2
, FIELDQUOTE = '\'
, FIELDTERMINATOR = ';'
, ROWTERMINATOR = '0x0a');
如果我有一个 Excel 文件,我可以将其转换为 CSV 并使用它。这很好用而且效率很高,但我的问题是我无法访问 SQL 服务器上的文件系统。有没有人知道解决这个问题的最佳方法是什么,或者是否有更好的完全不同的方法?
【问题讨论】:
-
为了能够从文件中
BULK INSERT,SQL Server 服务帐户必须有权访问文件所在的位置;如果没有,它就无法访问它。您需要将文件放置/复制到服务帐户可以访问的位置,让服务帐户访问文件当前所在的位置(可能不明智,具体取决于您的企业的数据隐私政策和该帐户当前的权限如何),或者创建一个新共享,您可以在其中放置需要批量加载的文件并授予服务帐户访问该新共享的权限。 -
请注意,您也可以直接从 xls(x) 文件中读取,而无需使用
OPENROWSET将其转换为 CSV。 -
如果您想使用 C# 构建一个简单的程序来导入您的 CSV 文件,那么您可以使用带有通用 CSV 文件阅读器库的 SqlBulkCopy 类
-
只使用 EF 和 list
标签: c# .net sql-server excel csv