powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Импорт файла в базу данных через sqlite3
15 сообщений из 15, страница 1 из 1
Импорт файла в базу данных через sqlite3
    #39748177
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
    #39748184
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelКак ускорить это мероприятие?
Глянь сюда https://www.sql.ru/forum/1302777/baza-3-mln-shtrihkodov
3 млн. за несколько секунд.
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748206
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelЗа 7 часов работы этого скрипта было импортировано. 1,205 млн записей.
Как ускорить это мероприятие?
sqlite3 dbfile ".import <TextFile> <Table>"
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748219
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,
А в определенный столбец разве так можно вставлять?
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748237
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,

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


Не работает? Просто моргает, а ничего не вставляет?
Я делаю просто: достаю данные в файл csv из таблицы в бд, чищу таблицу и пытаюсь экспортированные данные из csv засунуть обратно - ничего не происходит.
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748248
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,
А если делать так:
Экспортирую в 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
    #39748275
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748284
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelWhite Owl,

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


Не работает? Просто моргает, а ничего не вставляет?
Я делаю просто: достаю данные в файл csv из таблицы в бд, чищу таблицу и пытаюсь экспортированные данные из csv засунуть обратно - ничего не происходит.Это не работает, потому что две команды с точкой одновременно дать нельзя.
И оно не моргает, а ругается.
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748285
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelWhite Owl,
А если делать так:
Экспортирую в csv через
Код: plsql
1.
sqlite3 -csv $db_file "select * from words;" > $tmp_file


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

А кто будет говорить что импорт тоже будет из csv?
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748302
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В начало скрипта добавь
Код: sql
1.
2.
3.
pragma read_uncommitted=ON;
pragma synhronous=OFF;
pragma journal_mode=OFF;


И делай копию базы перед запуском скрипта.

PS Эти прагмы ускоряют, но в случае сбоя компа во время изменения базы - база может поломаться.
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748303
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,

И как тогда сказать ему об этом, что тоже формата csv? Глядя на справку "-csv" это ключ для для экспорта.


На счёт импорта файла csv/txt - выдаёт одну и ту же ошибку про несовместимость типов данных. Но почему? Я ж только что достал из бд эти данные.
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748419
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelWhite Owl,

И как тогда сказать ему об этом, что тоже формата csv? Глядя на справку "-csv" это ключ для для экспорта.А экспериментировать тебе религия запрещает?

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

Вот бд
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748546
Фотография Karbafos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelWhite Owl,
На счёт религии - не пробовал, но почитал хелп.

Вот бд

2 минуты в гугле

Код: sql
1.
2.
3.
4.
sqlite3 $db_file <<END_COMMANDS
.mode csv
.import $tmp_file users
END_COMMANDS



Код: sql
1.
printf ".mode csv\n.import $tmp_file users\n" | sqlite3 $db_file
...
Рейтинг: 0 / 0
Импорт файла в базу данных через sqlite3
    #39748607
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Karbafos,

А вот то что вот так параметры можно подавать - не знал. Спасибо! Вроде работает.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Импорт файла в базу данных через sqlite3
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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