如何在将数据从 python 推送到 sql 服务器时避免 bcpy(批量复制 python)中的 dbo

how to avoid dbo in bcpy(bulk copy python) while pushing the data into sql server from python

我正在尝试使用 python 中的 bcpy 将数据从 pandas 数据帧推送到 sql 服务器 table脚本。

database : db_name
table : schema_name.table_name

但默认情况下它会在 运行 时创建 dbo 架构并抛出如下错误:

A valid table name is required for in, out, or format options. 
db_name.dbo.schema_name.table_name

实际上,我将模式名称命名为 schema_name

如何避免默认架构名称dbo

如果我给出架构名称,

database : database_name
schema : schema_name
table : table_name

它创建了 database_name.schema_name.table_name。 但仍然显示

A valid table name is required for in, out, or format options.
failed : Bcp command failed

在提及 table 名称时无需提及架构名称。

您可以使用以下 bcp 命令将数据从 csv 文件上传到 table。将您的数据帧写入 csv 文件,然后执行以下命令。

df.to_csv("data.csv",index=False)
command = 'bcp "dbo.table_name" in "data.csv" -S"server_name" -d"DB_name" -F2 -c -t"," - U"user_name" -P"password" -e error.txt'
os.system(command)

尝试在方括号中提及数据库、架构和 table 名称,看看是否可行。

database :   [database_name]
schema   :   [schema_name]
table    :   [table_name]
  1. 用于 SQL 服务器的 BCP(批量复制程序)实用程序应该安装在您的机器上。

  2. 数据库详细信息应为字典形式

    sql_config = {database : database_name schema : schema_name table : table_name}

如果没有指定模式名称,默认情况下 dbo 将是模式名称。

将所有输入放入 bcp 命令时,sql table 名称将是 database_name.schema_name.table_name