因此,我有一个我创建的空表(参见下面的代码),我需要使用python-sql连接从csv文件加载数据。在执行此操作时,需要替换html代码并更改为正确的数据类型(清理文件),最后将其加载到这个空的sql表中。
这是我写的代码,但是,如果没有任何success...when,我在SQL中检查表,它只返回一个空表:
Python代码:
import csv
with open ('UFOGB_Observations.csv', 'r') as UFO_Obsr:
## Write to the csv file, to clean it and change the html codes:
with open ('UFO_Observations.csv', 'w') as UFO_Obsw:
for line in UFO_Obsr:
line = line.replace(',', ',')
line = line.replace(''', "'")
line = line.replace('!', '!')
line = line.replace('&', '&')
UFO_Obsw.write(line)
##To Connect Python to SQL:
import pyodbc
print('Connecting...')
conn = pyodbc.connect('Trusted_Connection=yes', driver = '{ODBC Driver 13 for SQL Server}', server = '.\SQLEXPRESS', database = 'QA_DATA_ANALYSIS')
print('Connected')
cursor = conn.cursor()
print('cursor established')
cursor.execute('''DROP TABLE IF EXISTS UFO_GB_1;
CREATE TABLE UFO_GB_1 (Index_No VARCHAR(10) NOT NULL, date_time VARCHAR(15) NULL, city_or_state VARCHAR(50) NULL,
country_code VARCHAR(50) NULL, shape VARCHAR (200) NULL, duration VARCHAR(50) NULL,
date_posted VARCHAR(15) NULL, comments VARCHAR(700) NULL);
''')
print('Commands succesfully completed')
#To insert that csv into the table:
cursor.execute('''BULK INSERT QA_DATA_ANALYSIS.dbo.UFO_GB_1
FROM 'F:\GSS\QA_DATA_ANALYSIS_LEVEL_4\MODULE_2\Challenge_2\TASK_2\UFO_Observations.csv'
WITH ( fieldterminator = '', rowterminator = '\n')''')
conn.commit()
conn.close()当我输入SELECT * FROM table时,我本希望看到一个包含所有1900+行的表,并且具有正确的数据类型(例如,date_time和date_posted列作为时间戳)
发布于 2019-08-01 23:20:23
(提前道歉。这里是新的,所以不允许评论。)
这是一张临时表吗?
2)您对您的查询的响应是什么?
代码会创建表吗?当您导入csv,然后写回相同的文件时,是否会产生您正在寻找的结果或崩溃?
发布于 2019-08-01 23:24:13
您可以像在SQL中一样编写查询,但是需要用python重写它们。Python需要将查询理解为python字符串,然后才能将其解析为sql。IE不使用'''包装语句。
这并未经过测试,但请尝试如下所示:
bulk_load_sql = """
BULK INSERT QA_DATA_ANALYSIS.dbo.UFO_GB_1
FROM 'F:\GSS\QA_DATA_ANALYSIS_LEVEL_4\MODULE_2\Challenge_2\TASK_2\UFO_Observations.csv'
WITH ( fieldterminator = '', rowterminator = '\n')
"""
cursor.execute(bulk_load_sql)它使用docstring将sql放在多行上,但您可能希望使用常规字符串。
以下是对pyodbc https://stackoverflow.com/a/43855693/4788717查询进行格式化的答案
https://stackoverflow.com/questions/57311916
复制相似问题