簡體   English   中英

通過python將文件插入到ms sql server

[英]inserting a file to ms sql server through python

我對編程很陌生。 我通過從 StackOverflow 和其他站點進行研究編寫了以下代碼。 我正在嘗試將 csv 文件上傳到 MS SQL Server。 每次我運行它時,它都會連接,然后彈出一條消息“以前的 SQL 不是查詢”。 我不確定如何實際解決這個問題。 任何建議和幫助將不勝感激

import pyodbc import _csv

source_path= r'C:\Users\user\Documents\QA Canvas\module2\Module 2 Challenge\UFO_Merged.csv'

source_expand= open(source_path, 'r')

details= source_expand.readlines

print('Connecting...')
     try:
    conn = pyodbc.connect(r'DRIVER={ODBC Driver 13 for SQL Server};'r'SERVER=FAHIM\SQLEXPRESS;'r'DATABASE=Ash;'r'Trusted_Connection=yes')
    print('Connected')
    cur = conn.cursor()
    print('Cursor established')

    sqlquery ="""
                IF EXISTS
                   (
                    SELECT TABLE_NAME ,TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES WHERE  TABLE_NAME = 'UFO_MERGED' AND TABLE_SCHEMA = 'dbo')

                    BEGIN
                    DROP TABLE [dbo].[UFO_MERGED]
                    END

                    CREATE TABLE [dbo].[UFO_MERGED]
                    (      [ID] smallint
                          ,[COMMENTS] varchar(max)
                          ,[FIRST OCCURANCE] datetime
                          ,[CITY] varchar(60)
                          ,[COUNTRY] varchar(20)
                          ,[SHAPE] varchar(20)
                          ,[SPEED] smallint
                          ,[SECOND OCCURANCE] datetime
                    PRIMARY KEY(id)
                    ) ON [PRIMARY]

                             """
    result = cur.execute(sqlquery).fetchall()
    for row in result:
        print(row)
    print("{} rows returned".format(len(result)))

    sqlstr= """
              Insert into [dbo].[UFO_Merged] values  ('()','()','()','()','()','()','()','()')             

              """

    for row in details[1:]:
        row_data =row.split(',')
        sqlquery=sqlstr.format(row_data[0],row_data[1],row_data[2],row_data[3],row_data[4],row_data[5],row_data[6],row_data[7])
        result=cur.execute(sqlquery)

    conn.commit()    
    conn.close()


except Exception as inst:
    if inst.args[0]== '08001':
        print("Cannot connect to the server")
    elif inst.args[0] == '28000':
        print("Login failed - check connection string")
    else:
        print(inst)

好吧,在嘗試在 SQL 之上引入其他技術(Python、R、C# 等)之前,請先確保 SQL 有效。 SQL 看起來有點奇怪,但我不是 SQL 專家,所以我不能肯定,而且我沒有時間在我的機器上重新創建您的設置。 也許你可以嘗試一些不太復雜的東西,讓它發揮作用,然后再學習更高級的東西。 以下對您有用嗎?

import pyodbc
user='sa'
password='PC#1234'
database='climate'
port='1433'
TDS_Version='8.0'
server='192.168.1.103'
driver='FreeTDS'

   con_string='UID=%s;PWD=%s;DATABASE=%s;PORT=%s;TDS=%s;SERVER=%s;driver=%s' % (user,password, database,port,TDS_Version,server,driver)
   cnxn=pyodbc.connect(con_string)
   cursor=cnxn.cursor()
   cursor.execute("INSERT INTO mytable(name,address) VALUES (?,?)",('thavasi','mumbai'))
   cnxn.commit() 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM