Python замена SQL bcp.exe - PullRequest
       19

Python замена SQL bcp.exe

0 голосов
/ 19 февраля 2020

Цель состоит в том, чтобы загрузить CSV-файл в базу данных Azure SQL непосредственно из Python, то есть не вызывая bcp.exe. Файлы CSV будут иметь такое же количество полей, как и таблицы назначения. Было бы неплохо не создавать файл формата, который требуется bcp.exe (xml для полей + -400 для каждой из 16 отдельных таблиц).

Следуя подходу Pythoni c, попробуйте вставить данные и попросить SQL Сервер выдать исключение в случае несоответствия типов или другое.

1 Ответ

1 голос
/ 19 февраля 2020

Если вы не хотите использовать bcp cammand для импорта файла csv, вы можете использовать библиотеку Python pandas.

Вот пример того, как я импортирую файл 'test9.csv' без заголовка на моем компьютере в базу данных Azure SQL.

CSV-файл:

enter image description here

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].

Запустите этот скрипт, и он заработает:

enter image description here

Пожалуйста, укажите эти документы:

  1. Как импортировать данные в PYTHON
  2. pandas .DataFrame.to_ sql

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...