Python 替代 SQL bcp.exe
Python replacement for SQL bcp.exe
目标是直接从 Python 将 csv 文件加载到 Azure SQL 数据库中,即不通过调用 bcp.exe。 csv 文件将具有与目标表相同数量的字段。最好不必创建 bcp.exe 要求的格式文件(xml 对于 16 个单独表格中的每一个的 +-400 个字段)。
按照Pythonic的方法,尝试插入数据,如果类型不匹配或其他,请SQL服务器抛出异常。
如果您不想使用 bcp cammand 导入 csv 文件,您可以使用 Python pandas
库。
下面是我将计算机上的 header 'test9.csv' 文件导入到 Azure SQL 数据库的示例。
Csv 文件:
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})
通知:
- 获取 Portal 上的连接字符串。
UID
格式如 [username]@[servername]
.
运行 这个脚本有效:
请参考这些文件:
希望这对您有所帮助。
目标是直接从 Python 将 csv 文件加载到 Azure SQL 数据库中,即不通过调用 bcp.exe。 csv 文件将具有与目标表相同数量的字段。最好不必创建 bcp.exe 要求的格式文件(xml 对于 16 个单独表格中的每一个的 +-400 个字段)。
按照Pythonic的方法,尝试插入数据,如果类型不匹配或其他,请SQL服务器抛出异常。
如果您不想使用 bcp cammand 导入 csv 文件,您可以使用 Python pandas
库。
下面是我将计算机上的 header 'test9.csv' 文件导入到 Azure SQL 数据库的示例。
Csv 文件:
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})
通知:
- 获取 Portal 上的连接字符串。
UID
格式如[username]@[servername]
.
运行 这个脚本有效:
请参考这些文件:
希望这对您有所帮助。