2015-04-01 5 views
0

Как использовать pipe to mysql load data infile с помощью python? Нижеследующее не работает. Местный файл ожиданий и, следовательно, не уверен, что из-за этого его не удается.mysql load file using pipe

cat = Popen(["cat /Users/test/filename.out"], stdout=PIPE, bufsize=-1, shell=True) 
load = """load data local infile - into table %s fields terminated by '|' lines terminated by '\\n';""" % (tablename) 

with conn: 
    cursor = conn.cursor() 
    for line in cat.stdout: 
     cursor.execute(load.stdin.write(line)) 
cat.stdout.close() 
cat.wait() 
load.stdin.close() 
load.wait() 
+0

Почему вы используете 'cat'? Почему вы используете оболочку? – cdarke

+0

'cat' предназначен только для представления здесь. У меня есть поток данных вместо 'cat' в приведенном выше примере. – user3327034

ответ

0

Вы можете просто использовать имя файла как этот

load = """load data local infile '/Users/test/filename.out' into table %s fields terminated by '|' lines terminated by '\\n';""" % (tablename) 

with conn: 
    cursor = conn.cursor() 
    for line in cat.stdout: 
    cursor.execute(load.stdin.write(line)) 
cat.stdout.close() 
cat.wait() 
load.stdin.close() 
load.wait() 
+0

«Кошка» в моем примере - это просто представление. Предположим, что 'cat' является ключом' s3' или файлом 'hadoop'. Как вы передаете его для «загрузки данных ...»? – user3327034