powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Импорт файла в базу данных через sqlite3
12 сообщений из 12, страница 1 из 1
Импорт файла в базу данных через sqlite3
    #39748181
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Нужно загрузить текстовый файл в базу данных кол-во строк 4млн, вес файла 58 мб.
Написал вот такой код
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
db_file="./user_dict.db"
dict_lang="ru"
dict_file="./russian2.txt"
tmp_file="./tmp.csv"
temp_txt="./tmp.txt"
#экспорт из словаря в файл вместе со столбцами
#sqlite3 -header -csv $db_file "select * from words;" > /sdcard/out.csv
#экспорт из словаря в файл только слов
echo "Получаем данные из словаря..."
sqlite3 -csv $db_file "select [word] from words;" > $tmp_file
#удаляем кавычки 
sed -i "s/\"//g" $tmp_file
#очищаем таблицу
sqlite3 $db_file "delete from words;"
#соединяем файлы в один
echo "Объединяем словари..."
cat $dict_file >> $tmp_file
#сортируем и удаляем дубли
cat $tmp_file | sort -u > $temp_txt
rm -rf $tmp_file
#записываем в базу
echo "Заполняем таблицу базы данных, ожидайте..."
i=1
cat $temp_txt | while read a
do
    sqlite3 $db_file "INSERT INTO words (_id,word,frequency,locale,appid,shortcut) VALUES ('$i','$a','1','$dict_lang','0','');"
    let "i=i+1"
done
rm -rf $temp_txt
echo "Готово!"


За 7 часов работы этого скрипта было импортировано. 1,205 млн записей.
Как ускорить это мероприятие?
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748190
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel
Код: powershell
1.
sqlite3 $db_file "INSERT

На каждую запись вызывать отдельную команду??? Жуть какая... Неужели сложить инсерты в файл нельзя было?
Уж если CSV Import не годится по какой-то причине.
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748192
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
Вот этот момент я и не понял как реализовать в командной строке. Может поясните на пальцах?
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748235
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Почему тогда это
Код: plsql
1.
sqlite3 $db_file ".mode csv .import $temp_txt words"


Не работает? Просто моргает, а ничего не вставляет?
Я делаю просто: достаю данные в файл csv из таблицы в бд, чищу таблицу и пытаюсь экспортированные данные из csv засунуть обратно - ничего не происходит.
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748247
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

А если делать так:
Экспортирую в csv через
Код: plsql
1.
sqlite3 -csv $db_file "select * from words;" > $tmp_file


А затем не трогая его очищаю таблицу, и импортирую файл csv который только что эксортировал вот так
Код: plsql
1.
sqlite3 $db_file ".import $tmp_file words"


То ругается ошибками
Код: powershell
1.
2.
3.
./tmp.csv:25191: INSERT failed: datatype mismatch
./tmp.csv:25192: expected 6 columns but found 1 - fill
ing the rest with NULL


как сделать нормально?
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748264
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelдостаю данные в файл csv из таблицы в бд, чищу таблицу и пытаюсь экспортированные данные из csv засунуть обратноА зачем вообще это все? Почему нельзя прямо в БД данные обработать? Она же и предназначена для этого.
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748293
Фотография Karbafos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelкак сделать нормально?

засунуть тексты ошибок в гугловский переводчик, если непонятно, что написано
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748299
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftBlackeAngelдостаю данные в файл csv из таблицы в бд, чищу таблицу и пытаюсь экспортированные данные из csv засунуть обратноА зачем вообще это все? Почему нельзя прямо в БД данные обработать? Она же и предназначена для этого.
Для того что б не придумать файл для импорта.
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748301
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KarbafosBlackeAngelкак сделать нормально?

засунуть тексты ошибок в гугловский переводчик, если непонятно, что написано
Остряк, как погляжу. Это сделал в первую очередь.
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748381
Фотография Karbafos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelKarbafosпропущено...


засунуть тексты ошибок в гугловский переводчик, если непонятно, что написано
Остряк, как погляжу. Это сделал в первую очередь.
и какие выводы после перевода? почему не совпадает количество колонок в базе и в csv?
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748397
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel,
Потому,что если много обновлений ,то для sqlite,\
Надо дать команду
Код: plsql
1.
2.
3.
BEGIN TRANSACTION
Потом обновления
Потом Commit


И всё это будет очень быстро.
.
Иначе(Без этих команд) на каждую операцию обновления sqlite пишет в журнал.
(По этому вопросу в форум sqlite надо было).
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748402
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel,
жестоко, есть же пакетная вставка, тынц , но там вроде ограничение есть на длину пакета, миллионы разбить на пакеты, будет имхо быстрей
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Импорт файла в базу данных через sqlite3
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]