跳转到主要内容

Microsoft SQL Server bcp (批量复制) 包装程序,带有Azure Synapse Blob替代方案

项目描述

bcpyaz

这是什么?

此包是Microsoft SQL Server bcp实用程序的包装器。当前Python中可用的数据库驱动器不足以传输数百万条记录(是的,我已经尝试了pyodbc fast_execute_many)。尽管有IO击打,但最快的选择是将数据保存到文件系统中的CSV文件(最好是/dev/shm tmpfs),然后使用bcp实用程序将CSV文件传输到SQL Server。

Azure Synapse / Blob扩展

如果设置了以下环境变量(示例)

  AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;AccountName=myblogstorageacct;AccountKey=jhadsfas235876dha90/17891hfh25125/12h2udfjs347512==;EndpointSuffix=core.windows.net"
  AZURE_TEMP_STORAGE_CONTAINER="tempcontainer"

那么将不会使用bcp命令行实用程序,而是将CSV文件临时复制到Azure Storage Blob,并使用COPY将其从那里传输到Synapse数据库。

您可能需要

GRANT ADMINISTER DATABASE BULK OPERATIONS TO <user>

到Synapse的连接用户。

sqlcmd实用程序仍然需要。

如何安装它?

确保您的计算机满足要求

从git clone本地安装

pip install -e .

或通过requirements.txt

-e git+https://git@github.com/Arcturus-io/bcpyaz.git#egg=bcpyaz

示例

以下示例向您展示如何使用此包将(1)平面文件和(2)DataFrame对象加载到SQL Server中。

平面文件

以下示例假设您有一个没有路径中限定符的逗号分隔文件 'tests/data1.csv'。下面的代码将文件发送到SQL Server。

import bcpy


sql_config = {
    'server': 'sql_server_hostname',
    'database': 'database_name',
    'username': 'test_user',
    'password': 'test_user_password1234'
}
sql_table_name = 'test_data1'
csv_file_path = 'tests/data1.csv'
flat_file = bcpy.FlatFile(qualifier='', path=csv_file_path)
sql_table = bcpy.SqlTable(sql_config, table=sql_table_name)
flat_file.to_sql(sql_table)

DataFrame

以下示例创建一个包含100行和4列的DataFrame,其中填充了随机数据,然后将其发送到SQL Server。

import bcpy
import numpy as np
import pandas as pd


sql_config = {
    'server': 'sql_server_hostname',
    'database': 'database_name',
    'username': 'test_user',
    'password': 'test_user_password1234'
}
table_name = 'test_dataframe'
df = pd.DataFrame(np.random.randint(-100, 100, size=(100, 4)),
                  columns=list('ABCD'))
bdf = bcpy.DataFrame(df)
sql_table = bcpy.SqlTable(sql_config, table=table_name)
bdf.to_sql(sql_table)

要求

您需要在系统中安装一个可工作的Microsoft bcp版本。您的PATH环境变量应包含bcp实用程序的目录。以下是不同操作系统的安装教程。

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

bcpyaz-0.2.0.tar.gz (11.5 kB 查看哈希值)

上传时间

构建分布

bcpyaz-0.2.0-py3-none-any.whl (12.7 kB 查看哈希值)

上传时间 Python 3

由以下组织支持