Запись csv-файла в базу данных SQL Server с использованием python

Привет, Я пытаюсь написать файл csv в таблицу в базе данных SQL Server с помощью python. Я сталкиваюсь с ошибками при передаче параметров, но я не сталкиваюсь с какой-либо ошибкой, когда делаю это вручную. Вот код, который я выполняю.

cur=cnxn.cursor() # Get the cursor csv_data = csv.reader(file(Samplefile.csv')) # Read the csv for rows in csv_data: # Iterate through csv cur.execute("INSERT INTO MyTable(Col1,Col2,Col3,Col4) VALUES (?,?,?,?)",rows) cnxn.commit() 

Ошибка: pyodbc.DataError: ('22001', '[22001] [Microsoft] [ODBC SQL Server Driver] [SQL Server] Строковые или двоичные данные будут усечены. (8152) (SQLExecDirectW); [01000] [Microsoft] [ ODBC SQL Server Driver] [SQL Server] Оператор завершен. (3621) ')

Однако, когда я вставляю значения вручную. Он отлично работает

 cur.execute("INSERT INTO MyTable(Col1,Col2,Col3,Col4) VALUES (?,?,?,?)",'A','B','C','D') 

Я убедился, что ТАБЛИЦА существует в базе данных, типы данных соответствуют данным, которые я передаю. Соединение и курсор также верны. Тип данных строк – «список»,

  • Подключение к экземпляру SQL Server с помощью pymssql в Windows
  • Как подключиться к SQL Server через sqlalchemy с помощью проверки подлинности Windows?
  • сделать python ждать, пока хранимая процедура завершит выполнение
  • sqlalchemy подключиться к серверу, не указывая базу данных
  • Подключение к SQL Server 2012 с использованием sqlalchemy и pyodbc
  • SQLAlchemy не может подключиться к базе данных mssql
  • MSSQL в python 2.7
  • Использование Sql Server с Django в производстве
  • 3 Solutions collect form web for “Запись csv-файла в базу данных SQL Server с использованием python”

    Подумайте о построении запроса динамически, чтобы убедиться, что количество заполнителей соответствует вашей таблице и формату файла CSV. Тогда просто вопрос обеспечения правильности таблицы и CSV-файла, а не проверки того, что вы набрали достаточно ? заполнители в вашем коде.

    Следующий пример предполагает

    1. CSV-файл содержит имена столбцов в первой строке
    2. Соединение уже построено
    3. Имя файла – test.csv
    4. Имя таблицы – MyTable
    5. Python 3
     ... with open ('test.csv', 'r') as f: reader = csv.reader(f) columns = next(reader) query = 'insert into MyTable({0}) values ({1})' query = query.format(','.join(columns), ','.join('?' * len(columns))) cursor = connection.cursor() for data in reader: cursor.execute(query, data) cursor.commit() 

    Если имена столбцов не включены в файл:

     ... with open ('test.csv', 'r') as f: reader = csv.reader(f) data = next(reader) query = 'insert into dbo.Test values ({0})' query = query.format(','.join('?' * len(data))) cursor = connection.cursor() cursor.execute(query, data) for data in reader: cursor.execute(query, data) cursor.commit() 

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

     for rows in csv_data: # Iterate through csv cur.execute("INSERT INTO MyTable(Col1,Col2,Col3,Col4) VALUES (?,?,?,?)", *rows) 

    Спасибо всем, я разобрался. Ошибка была вызвана ограничением ограничения размера таблицы. Он изменил емкость столбца, например, от col1 varchar (10) до col1 varchar (35) и т. Д. Теперь он работает отлично.

    @beargle: Мне очень понравился ваш способ программирования

    Interesting Posts

    Отмените опцию `–no-site-packages` с virtualenv

    Почему np.where быстрее, чем pd.apply

    Невозможно удалить видео с помощью API данных Youtube

    Классы Python и метод __init__

    «Заморозить» некоторые переменные / области действия в тензорном потоке: stop_gradient vs пропускает переменные для минимизации

    Изменение размера изображения с сохранением пропорций И ​​создание портретных и ландшафтных изображений одинакового размера?

    Учитывая имя пакета Python, каково имя модуля для импорта?

    Может ли библиотека запросов Python использоваться в Google App Engine?

    Python: найдите контурные линии из matplotlib.pyplot.contour ()

    Создание ответа JSON с использованием Django и Python

    Заполнение списка / массива индексом в Python?

    Добавление текста справки по модели в форму администратора django

    Использование для динамических языков

    Многопроцессорность Python: TypeError: ожидаемая строка или объект Unicode, обнаружен NoneType

    элемент доступа в результате JSON

    Python - лучший язык программирования в мире.