как создать базу данных SQL из файла csv в Python


Мне нужно загрузить большой набор данных (20 Гб на данный момент, но в будущем будет 100 ГБ) из файла csv. Я использую модуль MySQLdb в python (PyCharm). Мне также нужно только выбрать некоторые определенные столбцы. До сих пор я пробовал это:

import csv
import MySQLdb

mydb = MySQLdb.connect(host='localhost',
    user='root',
    passwd='',
    db='mydb')
cursor = mydb.cursor()

csv_data = csv.reader(file('collected_quotes_sample.csv'))
for row in csv_data:
    cursor.execute('INSERT INTO testcsv(RIC, Date, Time, Ask, Bid, BAS, window ) VALUES(%s, %s, %s, %s, %s, %s, %s)', row)
#close the connection to the database.
mydb.commit()
cursor.close()
print "Done"

Но это дает много ошибок. Я новичок в python и SQL database, поэтому я не знаком с командами / кодами. Поэтому у меня есть несколько вопросов:

1. with MySQLdb.connect( host,user,passwd,db etc), what are host, user, password etc? to my understanding, they are credentials for my account in the computer. so do I need to put in my user account and password?
2. What does mydb.cursor do?
3. How to upload a csv file into a SQL database? and after the database is created, I can write a python script to work on it and there is no need to re read/create the database?

Большое спасибо!

2   2   2016-05-30 04:47:40

2 ответа:

Чтобы ответить на ваши вопросы

  1. с MySQLdb.подключения( хост,пользователь,пароль,БД и т. д.), Что хост, пользователя, пароль и т. д? насколько я понимаю, они являются верительными грамотами для моего счет в компьютере. так что мне нужно ввести свою учетную запись пользователя и пароль?
  • Ответ : хост-это IP-адрес сервера + номер порта. пользователь / pwd-это клиентский пользователь, созданный на стороне сервера. И один хост может иметь много БД, созданных внутри, так что вам нужно укажите БД. Обычно при запуске вы, скорее всего, используете localhost(127.0.0.1), и номер порта-это то, что вы определили при создании сервера. После запуска сервера один или несколько клиентов могут быть подключены к серверу баз данных. Затем вам понадобится суперпользователь (например, root) со всеми привилегиями и несколько других обычных пользователей (вероятно, с меньшими привилегиями).
  1. Что делает mydb.курсор сделать?
  • Ответ: курсор находится объект, который может выполнять операции, такие как инструкции SQL. Вам всегда нужно, чтобы объекты Курсора взаимодействовали с сервером MySQL. Если вы используете собственный SQL-скрипт для взаимодействия с сервером MySQL, вам действительно не нужен этот объект cursor, но так как вы используете MySQLdb в качестве оболочки Python, то вам нужно использовать его, поскольку DB-API требует, чтобы вы взаимодействовали с ними таким образом (объект cursor-это абстракция, указанная в Python DB-API 2.0).
  1. Как загрузить csv файл в базу данных SQL? и после того, как база данных будет создана, я могу написать скрипт python для работы над ней и нет необходимости повторно читать / создавать базу данных?
  • Ответ: как правило, код, который вы показали в вопросе, выполняет процесс загрузки. Таким образом, как только вы загрузили успешно, вы можете затем получить его позже, реализуя некоторый оператор извлечения SQL в вашем Python с помощью MySQLdb. После того, как БД будет создана, вы редко будете нуждаться в повторном создании если только вы не хотите удалить все свои старые данные. И чтобы работать с ним, вам всегда нужно будет read из БД. Но вы можете поместить обычно используемый SQL (или вызвать некоторую сохраненную функцию / процедуру) в свой код Python, так что вы можете просто вызвать одну функцию, чтобы получить данные так, как вы хотите.

Вообще, я думаю, что вы должны понять больше об основах MySQL, прежде чем спешить использовать их. А также как установить MySQL на Windows

Если вы хотите создать SQL-БД с Python просто ради игры с обоими языками, вам следует попробовать SQLite:

import sqlite3
conn = sqlite3.connect("brand_new_db.db")

И вы закончили.

В интернете есть много учебных пособий. это, например, может быть хорошей отправной точкой.