Вставка данных CSV к SQLite в PHP PDO - является там каким-либо более быстрым методом, чем ряд вставки рядом?

Я ищу эффективный метод для вставки данных CSV в базу данных SQLite по удаленному серверу.

Я должен использовать PHP. Я использую SQLite3, таким образом, я должен использовать PDO (sqlite_query, не будет работать).

CSV находится на серверной стороне, и это имеет 100000 + ряды (50 МБ + filesize).

Вопрос: есть ли какой-либо метод для PHP быстрее, чем это?

for (/* each row, 100.000 rows */)
{
    $a = 'something';
    $b = 'something';
    $query = $link->prepare("INSERT INTO user_info (a, b) VALUES (?, ?)");
    $query->bindParam(1, $a);
    $query->bindParam(2, $b);
    $query->execute();
}

Мой файл SQL находится в том же самом справочнике.

Я читал о .import команда, но я не знаю, как использовать его с PDO (я буду использовать , готовят ? как путь к файлу должен быть похожим?).

Я плохо знаком с PDO и SQLite.

0
@KingCrunch не двойной.. что, если необходимо отфильтровать недействительные ценности??? Связь, которую вы дали, может только работать на ценности, которым доверяют,
добавлено автор Baba, источник
Прочитайте его, затем напишите его.Whats the problem?
добавлено автор KingCrunch, источник
Прочитайте его, затем напишите его.Whats the problem?
добавлено автор KingCrunch, источник
возможный дубликат Оптовые данные о грузе в sqlite?
добавлено автор KingCrunch, источник
возможный дубликат Оптовые данные о грузе в sqlite?
добавлено автор KingCrunch, источник
@Baba, Который был бы чем-то другим, но вопросом doesn' t содержат "фильтр", он содержит oly "вставка CSV в базу данных SQLite". Также OP упомянул упомянутый .import самостоятельно. Если вы правы, OP должен разъяснить его вопрос, еще it' s дубликат:)
добавлено автор KingCrunch, источник
@Baba, Который был бы чем-то другим, но вопросом doesn' t содержат "фильтр", он содержит oly "вставка CSV в базу данных SQLite". Также OP упомянул упомянутый .import самостоятельно. Если вы правы, OP должен разъяснить его вопрос, еще it' s дубликат:)
добавлено автор KingCrunch, источник

7 ответы

$link->beginTransaction();

$query = $link->prepare("INSERT INTO user_info (a, b) VALUES (?, ?)");
for (/* each row, 100.000 rows */)
{
//variable stuff + execute query
}

$link->commit();

Это держит писание до окончания петли - намного быстрее. Необходимо будет создать объект db как это: $link = новый PDO ('sqlite:your.db');

править: Исправление опечатки/пасты

2
добавлено
Кроме того, it' s стоящий замечания, что это может не произвести то же самое ускорение на других системах DB - на самом деле, как раз наоборот, так как система управления базами данных должна будет поддержать более высокий уровень изоляции, и или приобрести замок или поддержать временную версию данных.
добавлено автор IMSoP, источник
$link->beginTransaction();

$query = $link->prepare("INSERT INTO user_info (a, b) VALUES (?, ?)");
for (/* each row, 100.000 rows */)
{
//variable stuff + execute query
}

$link->commit();

Это держит писание до окончания петли - намного быстрее. Необходимо будет создать объект db как это: $link = новый PDO ('sqlite:your.db');

править: Исправление опечатки/пасты

2
добавлено
Кроме того, it' s стоящий замечания, что это может не произвести то же самое ускорение на других системах DB - на самом деле, как раз наоборот, так как система управления базами данных должна будет поддержать более высокий уровень изоляции, и или приобрести замок или поддержать временную версию данных.
добавлено автор IMSoP, источник

Ну, я не знаю, есть ли оптовый подход с SQLite, который может использоваться через водителя PDO, но вы повторно готовите то же самое заявление о каждой петле.

Это, вероятно, было бы более эффективным прикосновением:

$query = $link->prepare("INSERT INTO user_info (a, b) VALUES (?, ?)");
for (/* each row, 100.000 rows */)
{
    $a = 'something';
    $b = 'something';

    $query->bindParam(1, $a);
    $query->bindParam(2, $b);
    $query->execute();
}
0
добавлено
Право. И что относительно множеств? У меня есть множество как это: $data [$row] [$cell]. Я могу связать элемент матрицы так или иначе? Я имею в виду динамический индекс ряда. У меня были проблемы с элементами массива привязок в C# и MSSQL и мне didn' t используемое множество здесь.
добавлено автор Kamil, источник
Ладно уж. Нет никакого лучшего ответа, так...:)
добавлено автор Kamil, источник
I' m не уверенный, что вы имеете в виду.
добавлено автор IMSoP, источник

Read about transactions. Start using transactions. Use search before asking. This is the answer.

0
добавлено

Read about transactions. Start using transactions. Use search before asking. This is the answer.

0
добавлено

Я плохо знаком для Так, таким образом, не уверенный в процессе, я представил флаг, но тем временем я думаю, что это - то, в чем вы нуждаетесь

Оптовые данные о грузе в sqlite?

0
добавлено

Я плохо знаком для Так, таким образом, не уверенный в процессе, я представил флаг, но тем временем я думаю, что это - то, в чем вы нуждаетесь

Оптовые данные о грузе в sqlite?

0
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp