Массовая вставка в Azure SQL с SQLAlchemy не сохраняется - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь использовать SQLAlchemy в Python для выполнения массовой вставки в мою базу данных SQL Azure (из хранилища BLOB-объектов). Внешний источник данных работает правильно, и я могу выполнить запрос из SQL Server Management Studio. Когда я пытаюсь сделать запрос из python:

query = '''

    BULK INSERT mytable FROM '%s.csv' WITH (DATA_SOURCE = 'blobStorage',
    FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', FIRSTROW=2) 
''' % report_date

insert = connection.execute(query)

запрос выполняется без ошибок. Тогда:

sel = connection.execute("SELECT count(*) FROM mytable where DATE='%s'" % report_date)

возвращает количество новых строк.

(36026,)

Я могу выбрать новые строки и посмотреть, что все данные выглядят правильно.

Однако, возвращаясь в SQL Server Management Studio, пытаясь выбрать новые строки, ничего не возвращается. Новые строки отсутствуют в таблице, и когда я перезапускаю свой скрипт Python и пытаюсь выбрать снова, строки исчезают.

Любой совет будет очень признателен.

1 Ответ

0 голосов
/ 30 апреля 2018

Я использовал следующий код Python для успешного импорта данных из файла CSV в базу данных SQL.

import pyodbc
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=***.database.windows.net;DATABASE=***;UID=***;PWD=***')

cursor = cnxn.cursor()

sql = """
BULK INSERT jaygong.dbo.Student
FROM 'insert.csv' 
WITH (
    DATA_SOURCE = 'j',
    FIELDTERMINATOR=',',
    ROWTERMINATOR='\n'
);
"""

cursor.execute(sql)
cnxn.commit()
cursor.close()
cnxn.close()

CSV-файл:

enter image description here

создать внешний источник данных sql:

CREATE EXTERNAL DATA SOURCE j  
    WITH (   
        TYPE = BLOB_STORAGE,  
        LOCATION = 'https://***.blob.core.windows.net/test1'
    )  

Вставить результат:

enter image description here

Кроме того, я предоставляю вам обходной путь, который вы можете использовать Azure Data Factory . Он поддерживает настройку источника входных и выходных данных. Вы можете использовать его для массового импорта данных из хранилища Azure в базу данных SQL Azure без какого-либо кода.

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

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