将csv文件导入python,使用python将CSV文件导入到SQL Server

I'm currently experiencing a problem importing a csv file to sql using a minor variation of python coding used in a previous answer:-

Insert csv into sql database

I've run into an issue where I get the following syntax error:-

line 28, in insert_records

cursor.execute(insert +'('+ ', '.join(values) +');')

pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 13 for

SQL Server][SQL Server]Incorrect syntax near '/'. (102) (SQLExecDirectW)")

I believe I am close to succeeding into getting this csv file to import into sql server. Currently the table in sql server headings already present. I've attached the python code I am using, the program terminates at [cursor.execute(insert +'('+ ', '.join(values) +');')]

Thanks in advance,

Bryan

import pyodbc

import csv

print('connecting')

conn = pyodbc.connect(r'DRIVER={ODBC Driver 13 for SQL Server};'r'SERVER=.\SQLExpress;'r'DATABASE=UFOGBobservations;'r'Trusted_Connection=yes')

print('Connected')

my_cursor = conn.cursor()

print('Cursor established')

def insert_records(table, yourcsv, cursor, cnxn):

#INSERT SOURCE RECORDS TO DESTINATION

with open(yourcsv) as csvfile:

csvFile = csv.reader(csvfile, delimiter=',')

header = next(csvFile)

headers = map((lambda x: x.strip()), header)

insert = 'INSERT INTO {} ('.format(table) + ', '.join(headers) + ') VALUES '

for row in csvFile:

values = map((lambda x: "'"+x.strip()+"'"), row)

cursor.execute(insert +'('+ ', '.join(values) +');')

conn.commit() #must commit unless your sql database auto-commits

table = 'table_1'

mycsv = r'C:\DataAnalystData\UFOGB_Observations.csv' # SET YOUR FILEPATH

insert_records(table, mycsv, my_cursor, conn)

cursor.close()

解决方案

This is possibly an escaping issue. It would be safer if you passed the values as a list of parameters to execute() rather than manually building a string. This will ensure that they are correctly escaped.

insert = 'INSERT INTO {} ('.format(table) + ', '.join(headers) + ') VALUES ({})' \

.format(', '.join(len(headers) * '?')) # Add parameter placeholders as ?

for row in csvFile:

values = map((lambda x: x.strip()), row) # No need for the quotes

cursor.execute(insert, values) # Pass the list of values as 2nd argument

conn.commit()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用PythonCSV文件导入MySQL中的步骤: 1.安装MySQL Connector: 安装MySQL Connector是将Python连接到MySQL的必要步骤。你可以使用以下命令安装MySQL Connector: ```python !pip install mysql-connector-python ``` 2.导入CSV文件: 你可以使用Python的pandas库来导入CSV文件。以下是一个示例代码,它将读取名为“data.csv”的CSV文件并将其存储在名为“data”的pandas数据帧中: ```python import pandas as pd data = pd.read_csv('data.csv') ``` 3.连接到MySQL: 你需要使用MySQL Connector来连接到MySQL。以下是一个示例代码,它将连接到名为“mydatabase”的MySQL数据库: ```python import mysql.connector mydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="mydatabase" ) ``` 4.创建表: 在将数据导入MySQL之前,你需要创建一个表来存储数据。以下是一个示例代码,它创建了一个名为“customers”的表: ```python mycursor = mydb.cursor() mycursor.execute("CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))") ``` 5.将数据插入表中: 你可以使用pandas库中的to_sql()函数将数据插入MySQL表中。以下是一个示例代码,它将导入“data”数据帧中的数据到名为“customers”的表中: ```python data.to_sql('customers', con=mydb, if_exists='append', index=False) ``` 在这里,if_exists参数用于指定表是否已存在,如果表不存在,则它将创建一个新表。index参数用于指定是否将数据帧的索引列导入MySQL表中。 完成以上步骤后,你的CSV文件中的数据应该已经成功导入到MySQL数据库中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值