У меня чертовски много времени получается получить локальные данные загрузки данных для работы с python. Я пробовал кучу разных способов в Python 3.6.5:
sqlpath = '\\corp.domain.com\dept\DCGSI\Extracts\SIM\'
sqlpath = "\\corp.domain.com\dept\DCGSI\Extracts\SIM\"
sqlpath = '\\\\corp.domain.com\\dept\\DCGSI\\Extracts\\SIM\\'
sqlpath = '//corp.domain.com/dept/DCGSI/Extracts/SIM/'
sqlpath = os.path.join("\\corp.domain.com","dept","DCGSI","Extracts","SIM")
sqlpath = os.path("\\\\corp.domain.com\dept\DCGSI\Extracts\SIM\")
Кажется, я не могу получить право на побег для использования в следующих целях, чтобы спасти мое здравомыслие. Я прочитал по крайней мере 10 различных сообщений здесь и перепробовал все эти предложения. Что я делаю не так, чтобы я мог использовать путь unc в loadQuery.
Вот (СОВРЕМЕННЫЙ) весь скрипт:
import config
import os
import pymysql
username = config.username
dbpassword = config.dbpassword
dbhost = config.dburl
conn = pymysql.connect(host=dbhost, port=3306,user=username,password=dbpassword,db='dcgsreports',autocommit=True,local_infile=1)
path = '//corp.domain.com/dept/DCGSI/Extracts/SIM'
tables = []
files = []
fileNames = os.listdir(path)
for fileNames in fileNames:
if fileNames.endswith(".csv"):
files.append(fileNames)
tables.append(fileNames.split('.')[0])
for f,t in zip(files, tables) :
truncQuery = '''TRUNCATE TABLE %s''' %t
loadQuery = '''LOAD DATA LOCAL INFILE '//corp.domain.com/dept/DCGSI/Extracts/SIM/%s' INTO TABLE %s FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINES;''' %(f, t)
print(loadQuery)
cursor = conn.cursor()
cursor.execute(truncQuery)
cursor.execute(loadQuery)
conn.commit()
conn.close()
то, что оператор print показывает следующее, это то, что должно быть передано как запрос (который должен быть правильным):
ЗАГРУЗИТЬ ДАННЫЙ ЛОКАЛЬНЫЙ ИНФИЛЬ '//corp.domain.com/dept/DCGSI/Extracts/SIM/SIM_Availability.csv' INTO TABLE SIM_Availability ПОЛЯ, ПРЕКРАЩАЕМЫЕ ',' ФАКУЛЬТАТИВНО ВКЛЮЧЕНЫ '' 'ЛИНИИ, ПРЕКРАЩАЕМЫЕ'
'IGNORE 1 LINES;
Все таблицы пусты, хотя, по-видимому, это указывает на то, что выполняется только truncQuery.