将 CSV 数据从共享文件夹路径导入 Azure SQL 数据库

Posted

技术标签:

【中文标题】将 CSV 数据从共享文件夹路径导入 Azure SQL 数据库【英文标题】:Import CSV data from shared folder path to Azure SQL database 【发布时间】:2021-11-10 18:36:28 【问题描述】:

我在共享文件夹中有一个 CSV 文件。 CSV 中的记录需要插入 Azure SQL 数据库。这是日常工作。

能否请您告诉我有哪些可用的选项可以做到这一点以及如何以有效的方式做到这一点。

使用的编程语言是 C#。

提前致谢。

【问题讨论】:

到目前为止你尝试过什么?你遇到了什么问题? 对于本地 SQL 服务器,我使用 SSIS 包从 CSV 获取记录并将其推送到 SQL DB。我是 Azure 的新手,只使用过 App 服务。因此,请检查 Azure 服务(如 Azure 功能或 Web 作业)的可能性。 【参考方案1】:

根据Doc,您可以使用 bcp 命令行实用程序将数据从 CSV 文件导入 Azure SQL 数据库或 Azure SQL 托管实例。

先决条件

Azure SQL 数据库中的数据库 已安装 bcp 命令行实用程序 已安装 sqlcmd 命令行实用程序

注意: 您的数据需要使用 ASCII 或 UTF-16 编码,因为 bcp 不支持 UTF-8。

您可以按照以下步骤将数据从 CSV 加载到 Azure SQL 数据库:

    创建目标表: 将 SQL 数据库中的表定义为目标表。表中的列必须与数据文件每一行中的数据相对应。

要创建表,请打开命令提示符并使用 sqlcmd.exe 运行以下命令:

sqlcmd.exe -S <server name> -d <database name> -U <username> -P <password> -I -Q "
    CREATE TABLE DimDate2
    (
        DateId INT NOT NULL,
        CalendarQuarter TINYINT NOT NULL,
        FiscalQuarter TINYINT NOT NULL
    )
    ;
"
    创建源数据文件:

打开记事本并将以下数据行复制到一个新的文本文件中,然后将此文件保存到本地临时目录 C:\Temp\DimDate2.txt。此数据为 ASCII 格式。

示例 txt 文件:

20150301,1,3 20150501,2,4 20151001,4,2 20150201,1,3 20151201,4,2 20150801,3,1 20150601,2,4 20151101,4,2 20150401,2,4 20150701,3,1 20150901,3,1 20150101,1,3

(可选)要从 SQL Server 数据库导出您自己的数据,请打开命令提示符并运行以下命令。将 TableName、ServerName、DatabaseName、Username 和 Password 替换为您自己的信息。

bcp <TableName> out C:\Temp\DimDate2_export.txt -S <ServerName> -d <DatabaseName> -U <Username> -P <Password> -q -c -t ,

    加载数据: 要加载数据,请打开命令提示符并运行以下命令,将服务器名称、数据库名称、用户名和密码的值替换为您自己的信息。

    bcp DimDate2 in C:\Temp\DimDate2.txt -S -d -U -P -q -c -t ,

使用此命令验证数据是否正确加载:

sqlcmd.exe -S <server name> -d <database name> -U <username> -P <password> -I -Q "SELECT * FROM DimDate2 ORDER BY 1;"

【讨论】:

以上是关于将 CSV 数据从共享文件夹路径导入 Azure SQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何将所有文件从 blob 存储容器导入和处理到 azure databricks

$ Azure 门户帐户创建的路径环境变量

将 Parquet 文件从 Azure 数据湖存储帐户复制到 Synapse 数据仓库表失败

从 WebAppService 访问 Azure 文件共享

R语言read csv导入后,数据变了

以编程方式下载 Azure 文件共享文档