Как импортировать файл .sql или .csv в SQLite?

Мне нужно выгрузить файл .sql или .csv в SQLite (я использую API SQLite3). Я только нашел документацию для импорта/загрузки таблиц, а не целых баз данных. Прямо сейчас, когда я печатаю:

sqlite3prompt> .import FILENAME TABLE 

Я получаю синтаксическую ошибку, так как она ожидает таблицу, а не всю БД.

Ответ 1

Для импорта из файла SQL используйте следующее:

sqlite> .read <filename>

Для импорта из файла CSV вам необходимо указать тип файла и таблицу назначения:

sqlite> .mode csv <table>
sqlite> .import <filename> <table>

Ответ 2

Попробуйте сделать это из команды, например:

cat dump.sql | sqlite3 database.db

Это, очевидно, будет работать только с операторами SQL в dump.sql. Я не уверен, как импортировать CSV.

Ответ 3

Чтобы перейти от SCRATCH с SQLite DB к импортированию CSV в таблицу:

  • Получить SQLite с веб-сайта.
  • При запуске командной строки sqlite3 <your_db_file_name> * Он будет создан как пустой файл.
  • Создайте новую таблицу в своей новой базе данных. Таблица должна соответствовать вашим полям CSV для импорта.
  • Вы выполняете это командой SQL: CREATE TABLE <table_Name> (<field_name1> <Type>, <field_name2> <type>);

После создания таблицы и сопоставления столбцов с вашими данными из файла вы можете сделать это выше...

.mode csv <table_name>
.import <filename> <table_name>

Ответ 4

Команда sqlite3.import не будет работать для обычных данных csv, поскольку она обрабатывает любую запятую как разделитель даже в цитируемой строке.

Это включает попытку повторно импортировать файл csv, созданный оболочкой:

Create table T (F1 integer, F2 varchar);
Insert into T values (1, 'Hey!');
Insert into T values (2, 'Hey, You!');

.mode csv
.output test.csv
select * from T;

Contents of test.csv:
1,Hey!
2,"Hey, You!"

delete from T;

.import test.csv T
Error: test.csv line 2: expected 2 columns of data but found 3

Кажется, мы должны преобразовать csv в список операторов Insert, или, возможно, будет работать другой разделитель.

В SuperUser я увидел предложение использовать LogParser для работы с файлами csv, я собираюсь изучить это.

Ответ 5

Если вы счастливы использовать (python) script, тогда существует python script, который автоматизирует это: https://github.com/rgrp/csv2sqlite

Это позволит автоматически создать таблицу для вас, а также сделать некоторые основные угадывания типов и кавычки данных для вас (так, например, будет выработано что-то, это число и установите тип столбца "реальным" ).

Ответ 7

Проверьте условия. https://gitorious.org/termsql https://gitorious.org/termsql/pages/Home

Он преобразует текст в SQL в командной строке. (CSV - только текст)

Пример:

cat textfile | termsql -o sqlite.db

По умолчанию разделитель является пробелом, поэтому, чтобы заставить его работать с CSV, использующим commata, вы бы сделали это следующим образом:

cat textfile | termsql -d ',' -o sqlite.db

альтернативно вы можете это сделать:

termsql -i textfile -d ',' -o sqlite.db

По умолчанию он будет генерировать имена столбцов "COL0", "COL1", если вы хотите, чтобы он использовал первую строку для имен колонок, которые вы делаете это:

termsql -i textfile -d ',' -1 -o sqlite.db

Если вы хотите установить пользовательские имена столбцов, вы сделаете следующее:

termsql -i textfile -d ',' -c 'id,name,age,color' -o sqlite.db

Ответ 8

SQLite чрезвычайно гибкий, поскольку он также позволяет SQLite специфические команды точек в синтаксисе SQL (хотя они интерпретируются CLI.) означает, что вы можете делать такие вещи.

Создайте таблицу sms следующим образом:

# sqlite3 mycool.db '.schema sms'
CREATE TABLE sms (_id integer primary key autoincrement, Address VARCHAR, Display VARCHAR, Class VARCHAR, ServiceCtr VARCHAR, Message VARCHAR, Timestamp TIMESTAMP NOT NULL DEFAULT current_timestamp);

Затем два файла:

# echo "1,ADREZZ,DizzPlay,CLAZZ,SMSC,DaTestMessage,2015-01-24 21:00:00">test.csv

# cat test.sql
.mode csv
.header on
.import test.csv sms

Чтобы проверить импорт CSV файла с помощью файла SQL, запустите:

# sqlite3 -csv -header mycool.db '.read test.sql'

В заключение это означает, что вы можете использовать оператор .import в SQLite SQL, как и в любом другом RDB, например MySQL с LOAD DATA INFILE и т.д. Однако это не рекомендуется.

Ответ 9

если вы используете его в Windows, обязательно добавьте путь к db в "", а также используйте двойную слэш\в пути, чтобы убедиться, что Windows это понимает.

Ответ 10

Импортируйте свои csv или sql в sqlite с phpLiteAdmin, это отлично.