Python Mysql在文件中加载数据

时间:2014-01-17 15:02:39

标签: python mysql csv

我有一个包含这样的列的数据库

Col1 Col2 Col3 Col4 Col5

我有两个csv文件,其中包含这样的数据

File-1
Column1, Column2, Column4, Column5
1,2,4,5
1,2,4,5
1,2,4,5
1,2,4,5
1,2,4,5

File-2
Column1, Column3, Column5
1,3,5
1,3,5
1,3,5
1,3,5
1,3,5
1,3,5

请告诉我使用infile命令加载数据以在表中的各列中加载file1和file2数据。即,从file1开始,.csv中的column4应该进入表格的COl4。

使用此命令,Column4进入Col3,Column5进入Col4。

import MySQLdb
import os
import string
import warnings

print "File Loader Started : QT"
output_path="F:/TestData_SD/QT_Files/"

# Open database connection
db = MySQLdb.connect (host="localhost",port=3307,user="root",\
                      passwd="gamma123",db="db_schema")

sql = """LOAD DATA LOCAL INFILE '{}'
INTO TABLE struct_pqrst
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\\r\\n'
IGNORE 1 LINES;;"""


l = os.listdir(output_path)
for file_name in l:
    if file_name.endswith('.csv'):

        try:
            cursor = db.cursor()
            cursor.execute(sql.format(output_path+file_name))
            db.commit()
            print "Loading file:"+file_name
        except Exception:
            print "Exception"
            # Rollback in case there is any error
            db.rollback()

# disconnect from server
db.close()
print "File Loader Ended : QT"

请帮助

1 个答案:

答案 0 :(得分:0)

在第二个文件中,您可以定义列。

LOAD DATA LOCAL INFILE '{}' 
INTO TABLE struct_pqrst (Column1, Column3, Column5)
FIELDS TERMINTED BY ',' 
LINES TERMINATED BY '\r\n' IGNORE 1 LINES;

查看我发布的链接。

参考:How to insert selected columns from a CSV file to a MySQL database using LOAD DATA INFILE