LINUX.ORG.RU

csv to sql

 , ,


0

1

Добрый день лор. Есть файл excel который весит ~160мб и содержит базу данных клиентов. Проблема заключается в том что файл открывается минут 10-30 ( в зависимости от мощности пк ), нужно что то сделать с этой бд чтобы она открывалась мгновенно и ей могли пользоваться простые пользователи.

Я попробовал :
1)Сконвертировал в csv и попытался залить на phpmyadmin, но оказалось что мускуль падает при обработке такого большого файла.

2) загрузить её в мускуль

load data infile '/home/me/fre.csv' into table test fields terminated by ',' ENCLOSED BY '"' lines terminated by '\n';
но полная фигня вышла, все таблицы пустые.

3) Узнал про сушествование mysql for excel, нашёл пк с оффтопиком, установил всё необходимое но тут тоже ничего не вышло.

Я всё еще сконаюсь к phpmyadmin, может если сконвертировать файл в sql и залить его на phpmyadmin то всё пройдёт успешно.
Лор, как сконвертировать csv в sql? Или буду рад услышать другие предложения.

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 3)

Ответ на: комментарий от metrokto
Identifiant;Nom;Adresse;Code postal;Ville;T?l?phone 1;      Telephone 2       ;Telephone 3;Fax 1;Fax 2;Fax3;Mobile 1;Mobile 2;Mobile 3;Email 1;Email 2;Email 3;Website;Mots cles;Domaine d'activit? 1;Domaine d'activit? 2;Domaine d'activit? 3;Nombre employ?s;Ann?e de cr?ation;Nom dirigeant;CA;R?sultat;;;;;;;

Это основные колонки. Блин, из за этого французского слегка полетела кодировка.

snaf ★★★★★
() автор топика

самый лобовой способ - скриптиком. если у тебя там запятые и кавычки, делать больше почти ничего не надо: просто слева от каждой строчки INSERT INTO table VALUES (

а справа );

если не знаешь awk/perl/gwbasic/ любой другой язык, можешь наваять макрос в word-е :)

MyTrooName ★★★★★
()
Последнее исправление: MyTrooName (всего исправлений: 1)
#!/usr/bin/env python3

import csv

def quote(s): return s.replace('"', '""').join('""')

for row in csv.reader(open('input.csv',encoding="utf8"),delimiter=';'):
    print("INSERT INTO table VALUES (" + ','.join(map(quote, row))+");")
MyTrooName ★★★★★
()
Ответ на: комментарий от snaf

щёрт, после конвертации excel > csv местами побилась французская кодировка. Кто то знает как исправить положение?

snaf ★★★★★
() автор топика
Последнее исправление: snaf (всего исправлений: 1)
Ответ на: комментарий от snaf

Конвертни сначала в binary, потом в нужную.

В смысле кодировку поля.

ziemin ★★
()
Последнее исправление: ziemin (всего исправлений: 1)
Ответ на: комментарий от MyTrooName

Выяснилось что ms office умеет сохранять csv только в ascii ( а мой файл как раз был сделан в ms offic'e.)

Вооружившись либр офисом я сохранил файл в csv и выставил кодировку utf-8. Потом открыл файл и кодировка была на месте.

Загрузил её в мускуль:

load data infile '/home/file.csv' into table test clients terminated by ',' ENCLOSED BY '"' lines terminated by '\n';

И тут она снова побилась, в phpmyadmin указанно что она стоит как latin1_swedish_ci, я пробовал изменить её на utf8-bin и utf8_spanish_ci, но это не помогло. На этот раз вместо знаков вопроса я вижу такие символы : é

Как быть? )

ziemin

snaf ★★★★★
() автор топика
Ответ на: комментарий от snaf

into table test clients terminated by ','

и снова, здравствуйте! )

и посмотри, позволяет ли команда load data указать явно кодировку загружаемого файла.

MyTrooName ★★★★★
()
Ответ на: комментарий от snaf

в phpmyadmin указанно что она стоит как latin1_swedish_ci

Она и в самом мускуле указана так же. Это известный косяк. Самое смешное, что автор мускуля уже свалил в марию, а дефолт остался.

Может он пропагандирует так Швецию. Может реально за столько лет никто не соизволил сменить дефолтную кодировку хотя бы на utf. Это факт.

Как бороться я уже выше описал, но повторюсь: сменить кодировку поля на binary, а потом на нужную. Это я предлагаю вариант без перезагрузки данных. Если не лень, то можно сделать с загрузкой. Тогда поставь сразу равильную кодировку у таблицы (и полей) и в сессии командой set names.

ziemin ★★
()
Ответ на: комментарий от MyTrooName

и снова, здравствуйте! )

здарова! =)
На этот раз там запятые)

и посмотри, позволяет ли команда load data указать явно кодировку загружаемого файла.

решилось таким образом

load data infile '/home/final.csv' into table clients character set utf8 fields terminated by ',' ENCLOSED BY '"' lines terminated by '\n';

Хотя она в phpmyadmin указана как latin1_swedish_ci, но отображается корректно.

ziemin Спасибо за помощь =)

snaf ★★★★★
() автор топика
Ответ на: комментарий от snaf

Хотя она в phpmyadmin указана как latin1_swedish_ci, но отображается корректно.

Насчёт французской не скажу, но русский спотыкается, ЕМНИП, на «ч» и «Я». Так что ты себе грамотно граблей наложил. Убедись, что mysql кодировка таблицы верная.

ziemin ★★
()
Ответ на: комментарий от snaf

Суть в том, что оно может спотыкаться на отдельных символах. Если кодировка таблиц (а, самое главное, полей) по-прежнему latin1, то даже не знаю. Может французкий целиком в неё входит. Может и нет.

ziemin ★★
()
Последнее исправление: ziemin (всего исправлений: 1)
Ответ на: комментарий от ziemin

Овет на сообщение:

Предлагаю флешмоб. В каждом уведомлении, возникшем по вине ужика, писать пост, с обязательным его кастованием.

Чтобы у модераторов не было повода сносить, предлагаю не изливать душу, а обойтись дежурной фразой. Например «Ужик. Чтоб ты дристал три дня дальше чем видел».

UPD:В общем я начал.

Гораздо эффективней будет если вы будете это делать с модерами, а не с ним. Они в первую очередь являются причиной.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.