【问题标题】:Read a Azure Blob via c# and insert into on-premise SQL Server [closed]通过 c# 读取 Azure Blob 并插入到本地 SQL Server [关闭]
【发布时间】:2021-11-15 18:51:42
【问题描述】:

这是一个概念证明。 目标:读取 Azure Blob 并将其加载到本地 SQL 服务器中。

步骤: 使用 C#,我已将 Azure blob 连接并下载到内存流中,并将其解析为 Json 文件。 我打算使用 EntityFramework 将数据加载到本地 SQL 服务器中。

AzureBlob --> MemoryStream --> Json文件 --> 类对象列表 --> 使用EntityFramework通过MVC加载到SQL

谁能告诉我这是否是正确的方法或提出更好的建议?

谢谢

【问题讨论】:

  • “我打算使用 EntityFramework” - 可能是重量级的,试试 Dapper。
  • 不能使用平台解决方案 Azure File Sync 吗?
  • 这对 Stack Overflow 来说不是一个好问题。我们不是在这里回答主要基于意见的问题。相反,尝试实现你的目标。如果您遇到问题,请提供minimal reproducible example 并清楚说明哪些问题无法正常工作。

标签: c# entity-framework-core azure-blob-storage


【解决方案1】:

你可以跳过

Json文件-->类对象列表-->使用EntityFramework

在存储过程中对 json 进行分步解析,然后将其插入到表中。

CREATE TABLE [dbo].[JsonTest] (
    [Id]          INT           NOT NULL,
    [firstName]   NVARCHAR (50) NULL,
    [lastName]    NVARCHAR (50) NULL,
    [age]         INT           NULL,
    [dateOfBirth] DATETIME2 (7) NULL
);

DECLARE @json NVARCHAR(MAX);
SET @json = N'[
     {"id": 2, "info": {"name": "John", "surname": "Smith"}, "age": 25},
     {"id": 5, "info": {"name": "Jane", "surname": "Smith"}, "dob": "2005-11-04T12:00:00"}
]';

INSERT INTO JsonTest 
SELECT *
FROM OPENJSON(@json)
   WITH (
     id INT 'strict $.id',
     firstName NVARCHAR(50) '$.info.name',
     lastName NVARCHAR(50) '$.info.surname',
     age INT,
     dateOfBirth DATETIME2 '$.dob'
  );

SELECT * FROM JsonTest

https://docs.microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server?view=sql-server-ver15#convert-json-collections-to-a-rowset

对于这样的事情,我也建议使用 Dapper。

【讨论】:

    猜你喜欢
    • 2011-02-06
    • 2016-04-16
    • 2018-10-10
    • 1970-01-01
    • 2012-08-03
    • 2021-07-03
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多