如何将 .csv 文件导入到 Azure Data Studio 上 sql server 上的现有表?

问题描述 投票:0回答:2

我使用的是 mac m1,所以无法使用 SSMS,我可以使用 Azure Data Studio。我想将 Excel 文件导入到 SQL Server 上的现有表中。如果我使用 BULK INSERT sql 查询,则会出现错误,因为 Azure Data Studio 无法看到除 Azure Blob 存储之外的本地文件存储。如果我使用 SQL Server 导入扩展,它会给出类似表已存在的错误。我该如何解决这个问题?我必须使用 .csv 数据编写 .NET 应用程序。

.net sql-server csv azure-data-studio
2个回答
0
投票

Azure Data Studio 是一个客户端应用程序,就像 SSMS 一样。两者都是 IDE,这意味着两者都不适合用于脚本化导入和导出。

使用bcp导入

您可以在 Linux 或 Mac 上安装 SQL Server 命令行工具,并使用 bcp 工具从命令行或脚本导入或导出数据。这些工具可以使用 Homebrew 安装:

brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
brew install mssql-tools

“从源数据文件导入数据”部分显示了如何导入数据并解释了选项。完整的语法是here bcp TestEmployees in ~/test_data.txt -S localhost -U sa -P <your_password> -d BcpSampleDB -c -t ','

在.NET中导入

如果您必须编写.NET应用程序,则可以使用

SqlBulkCopy

类将数据直接导入数据库。数据必须可通过 IDataReader 接口访问。 通过 IDataReader 读取 CSV 数据的一种方法是使用 CsvHelper 包中的

CsvDataReader

类: using (var reader = new StreamReader(pathToCSV)) using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture)) { using (var dr = new CsvDataReader(csv)) { using (var connection=new SqlConnection(connectionString)) { connection.Open(); using (var bcp=new SqlBulkCopy(connection)) { bcp.DestinationTableName = "dbo.BulkCopyDemoMatchingColumns"; bcp.WriteToServer(dr); } } }

如果文件标题和表格列按位置匹配,这将起作用。如果没有,则必须通过 
ColumnMappings

属性 指定从源列到目标列的映射


-1
投票
© www.soinside.com 2019 - 2024. All rights reserved.