为了账号安全,请及时绑定邮箱和手机立即绑定

Python 替代 SQL bcp.exe

Python 替代 SQL bcp.exe

德玛西亚99 2022-08-02 16:19:20
目标是直接从 Python 将 csv 文件加载到 Azure SQL 数据库中,也就是说,不是通过调用 bcp.exe。csv 文件的字段数将与目标表相同。最好不必创建 bcp 所需的格式化文件 bcp.exe(xml 表示 16 个单独表中每个表的 +-400 个字段)。按照 Pythonic 方法,尝试插入数据并要求 SQL Server 在存在类型不匹配或其他情况时引发异常。
查看完整描述

1 回答

?
MM们

TA贡献1886条经验 获得超2个赞

如果您不想使用 bcp cammand 导入 csv 文件,则可以使用 Python 库。pandas

下面是我将计算机上的无标头“test9.csv”文件导入 Azure SQL 数据库的示例。

csv 文件:

//img1.sycdn.imooc.com//62e8de240001b74102520116.jpg

Python 代码示例:


import pandas as pd

import sqlalchemy

import urllib

import pyodbc


# set up connection to database (with username/pw if needed)

params = urllib.parse.quote_plus("Driver={ODBC Driver 17 for SQL Server};Server=tcp:***.database.windows.net,1433;Database=Mydatabase;Uid=***@***;Pwd=***;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;")


engine = sqlalchemy.create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)


# read csv data to dataframe with pandas

# datatypes will be assumed

# pandas is smart but you can specify datatypes with the `dtype` parameter

df = pd.read_csv (r'C:\Users\leony\Desktop\test9.csv',header=None,names = ['id', 'name', 'age'])


# write to sql table... pandas will use default column names and dtypes

df.to_sql('test9',engine,if_exists='append',index=False)


# add 'dtype' parameter to specify datatypes if needed; dtype={'column1':VARCHAR(255), 'column2':DateTime})

通知:

  1. 在门户上获取连接字符串。

  2. UID格式就像 .[username]@[servername]

运行此脚本,它的工作原理是:

//img1.sycdn.imooc.com//62e8de360001b32b10110535.jpg

查看完整回答
反对 回复 2022-08-02
  • 1 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号