Python Mysql在文件中加载数据(Python Mysql Load data in file)

我有一个像这样的列的数据库

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"

请帮忙


I have a database with columns like this

Col1 Col2 Col3 Col4 Col5

And i have two csv files which has data like this

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

Please tell me the Load data with infile command to load file1 and file2 data in respective columns in table. i.e. from file1 the column4 from .csv shouldo go into the COl4 of the table.

With this command the Column4 goes in Col3 and Column5 into 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"

please help

2022-06-09 18:06

满意答案

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

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

看看我发布的链接。

参考: 如何使用LOAD DATA INFILE将CSV文件中的选定列插入MySQL数据库


In the second file you could define the columns.

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

Have a look in the link i posted.

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

相关问答

更多

MySQL从CSV数据中加载NULL值(MySQL load NULL values from CSV data)

这将做你想要的 它将第四个字段读入一个局部变量,然后将实际字段值设置为NULL,如果局部变量最终包含一个空字符串: LOAD DATA infile '/tmp/testdata.txt' INTO TABLE moo fields terminated BY "," lines terminated BY "\n" (one, two, three, @vfour, five) SET four = nullif(@vfour,'') ; 如果他们都可能是空的,那么你会把它们全部变成变量,并且...

Python中的MySQL LOAD DATA INFILE无法使用变量(MySQL LOAD DATA INFILE in Python not working using variable)

好像你只需要用引号括起来。 sql = """LOAD DATA LOCAL INFILE "%s" INTO ...""" Seems like you just need to wrap it in quotes. sql = """LOAD DATA LOCAL INFILE "%s" INTO ..."""

如何在MySQL中加载文件(How to load file in MySQL)

这是因为您使用的功能打开了安全漏洞。因此,如果您想使用它,则需要手动启用设置。 mysql -u myuser -p --local-infile thedb 请看这里 This is because the feature you use open a security hole.So if you want to use it you would need to enable the settings manually. mysql -u myuser -p --local-infile t...

帮助MySQL LOAD DATA INFILE(Help with MySQL LOAD DATA INFILE)

你这里基本上有3个问题。 以相反的顺序 你在个人陈述中进行Python插入吗? 您可能希望使用begin transaction / commit将它们全部包围起来。 20,000次提交可能需要数小时。 您的import语句定义了6个字段,但CSV有7个字段。 这将解释双行计数:每行输入在数据库中产生2行,第2行在字段2-6中为null。 将插入不完整的行,并为缺少的列提供空值或默认值。 对于那些格式错误的行,这可能不是您想要的。 如果你的python程序即使只有一个事务也不能足够快地执行,你至少...

MySQL在文件中加载数据不插入所有值(MySQL LOAD DATA IN FILE Not Inserting all the values)

嗨Rezaq你可以用这个: LOAD DATA LOCAL INFILE '/var/www/coupons.txt' INTO TABLE coupons FIELDS TERMINATED BY '\t' ENCLOSED BY ',' LINES TERMINATED BY '\n' (coupon); Hi Rezaq you can use this: LOAD DATA LOCAL INFILE '/var/www/coupons.txt' INTO TABLE coupon...

在文件错误中加载数据(LOAD DATA IN FILE ERROR)

查询的最后一行应包含数据库列名。 这些名称不应包含空格或点。 (我认为他们实际上不能) 因此,您需要将这些更改为真实的列名,而不是CSV中的标题。 或者,如果您的列顺序匹配,则可以删除最后一行。 Last line of your query should contain database column names. These names should not contain spaces, or dots. (I think they can not actually) So, you nee...

Python将一组.csv文件加载到MySQL中(Python loading a set of .csv files into MySQL)

您需要将文件名插入到SQL字符串中; 您只是将文本文本file_name发送到服务器。 您可以使用str.format()方法,然后可以用您选择的变量替换任何占位符。 您还必须将try和except块缩进到for循环中: sql = """LOAD DATA LOCAL INFILE '{}' INTO TABLE system_work FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\\r\\n'...

Python Mysql在文件中加载数据(Python Mysql Load data in file)

在第二个文件中,您可以定义列。 LOAD DATA LOCAL INFILE '{}' INTO TABLE struct_pqrst (Column1, Column3, Column5) FIELDS TERMINTED BY ',' LINES TERMINATED BY '\r\n' IGNORE 1 LINES; 看看我发布的链接。 参考: 如何使用LOAD DATA INFILE将CSV文件中的选定列插入MySQL数据库 In the second file you could ...

LOAD DATA LOCAL INFILE上的Python2.7 MySQL连接器错误(Python2.7 MySQL Connector Error on LOAD DATA LOCAL INFILE)

通过在连接中添加适当的客户端标志可以轻松解决此问题,如下所示: import mysql.connector from mysql.connector.constants import ClientFlag cnx = mysql.connector.connect(user='[username]', password='[pass]', host='[host]', client_flags=[ClientFlag.LOCAL_FILES]) cursor = cnx.cursor() 这...

相关文章

更多

form load 的问题

baseinfoForm.form.load({ url: '/Url/Institution/In ...

Becoming a data scientist

Data Week: Becoming a data scientist Data Pointed, ...

《Big Data Glossary》笔记

清明假期翻以前的笔记发现有一些NoSQL相关的内容,比较零散,是之前读《Big Data Glossa ...

探索 Python,第 1 部分: Python 的内置数值类型

Python 编程语言具有很高的灵活性,它支持多种编程方法,包括过程化的、面向对象的和函数式的。但最重 ...

python top project of 2013

Hi Pythonistas! 测试和调试 Testing & Debuggi ...

实例讲解Hadoop中的map/reduce查询(Python语言实现)

条件,假设你已经装好了 Hadoop集群,配好了hdfs并可以正常运行。 ...

又拍网架构-又一个用到python的网站

又拍网是一个照片分享社区,从2005年6月至今积累了260万用户,1.1亿张照片,目前的日访问量为20 ...

又拍网架构-又一个用到python的网站

又拍网是一个照片分享社区,从2005年6月至今积累了260万用户,1.1亿张照片,目前的日访问量为20 ...

又拍网架构-又一个用到python的网站

又拍网是一个照片分享社区,从2005年6月至今积累了260万用户,1.1亿张照片,目前的日访问量为20 ...

又拍网架构-又一个用到python的网站

又拍网是一个照片分享社区,从2005年6月至今积累了260万用户,1.1亿张照片,目前的日访问量为20 ...

最新问答

更多

绝地求生、荒野行动、香肠派对 哪个更好玩???(都是吃鸡类游戏)

PC上的绝地求生,是最早也是最火的大逃杀游戏。 荒野行动是网易抄袭蓝洞绝地求生制作的手游。相似度90%,还有他一起出的终结折2,这2款正在被蓝洞告,打官司呢。 手游上的绝地求生有2部都是蓝洞授权(收钱)给腾讯开发的正版ID手游。所以跟PC上做的一模一样,蓝洞也没话说。 加上吃鸡国服也是腾讯独家代理,所以根本没有什么可说的。只要这个类型的 过于相似的,腾讯都可以借蓝洞之手起诉。打压同行是国内BAT最爱干的事嘛! 香肠派对画风虽然不一样,但核心玩法还是跟人家正版的一样的,同样也是没有被授权的。 98

如何在jQuery集合中选择第n个jQuery对象?(How to select the nth jQuery object in a jQuery collection?)

你可以使用eq : var rootElement = $('.grid').find('.box').eq(0); rootElement.find('.a'); /* Use chaining to do more work */ You can use eq: var rootElement = $('.grid').find('.box').eq(0); rootElement.find('.a'); /* Use chaining to do more work */

ASP NET使用jQuery和AJAX上传图像(ASP NET upload image with jQuery and AJAX)

您可以自己手动设置FormData键和值。 Upload 创建FormData并设置新的键/值 $("#btnUpload").on("click", function(e) { e.preventDefault(); var file = $("#imguploader").get(0).file

SQL Server XML查询中包含名称空间的位置(SQL Server XML query with namespaces in the where exist)

您可能希望使用#temp.identXml.query而不是#temp.identXml.query 。 您可以在这里阅读更多相关信息SQL Server XML exists() 我相信你也可以像这样使用它 Select #temp.identXml.value('(/*:PersonIdentity/*:MasterIndexes/*:PersonIndex/*:SourceIndex)[1]','varchar(100)') as Ident ,#temp.identXml.value(

宁夏银川永宁县望远镇哪里有修mp5的?

胜利街有家电维修,电脑城,银川商场多得很…

我想用更新的日期标记所有更新的行(I would like to mark all updated rows with the date that they have been updated)

您可以使用更新后触发的触发器来执行此操作。 给出如下表: create table your_table (id int primary key, val int, last_update datetime) 每当您更新表中的内容时,此触发器将设置last_update值。 CREATE TRIGGER trigger_name ON your_table AFTER UPDATE AS BEGIN UPDATE your_table SET your_ta

郑州会计培训班

招生的,至于时间吗,就看你自己的时间段了,你可以致电0371-63300220.他们会帮你选择一下的。离你最近,最专业的培训班。

如何定位数组中的负数,并得到所有正数的总和?(How to target e negative number from an array, and get the sum of all positive numbers?)

只需创建一个条件来检查它是正数还是负数,然后定义一个空的数组negatives ,如果数字是负数,则将其推到负数组中,如果是正数,则将其添加到sum变量中,请查看下面的工作示例。 function SummPositive( numbers ) { var negatives = []; var sum = 0; for(var i = 0; i < numbers.length; i++) { if(numbers[i] < 0) { negati

在响应图像上叠加网格(Overlay grid on responsive image)

使用两个linear-gradient s,我们可以创建两个简单的线条,然后每隔n%重复一次background-size 。 它看起来像这样: background: linear-gradient(to bottom, #000 2px, transparent 2px), linear-gradient(to right, #000 2px, transparent 2px); background-size: 10%; 两个渐变创建两条相交的线,长度为百分比,如下所示: 使用默认的b

无法让POST在Azure网站上运行(Could not get POST to work on Azure Website)

最后我找到了答案......我不得不删除尾随的斜线! 我使用了“ https://example.com/api/messages/ ”,这将自动产生GET,无论我使用PostAsync还是PostAsJsonAsync。 使用“ https://example.com/api/messages”,GET和POST似乎都运行良好! Finally I've found the answer.... I had to remove the trailing slash! I've used "ht