В Linux есть команда для преобразования файла CSV в файл SQLite? - PullRequest
1 голос
/ 07 февраля 2011

Существует ли команда Linux, которая преобразует CSV-файл в базу данных SQLite, например:

csv2sqlite input.csv output.sqlite [optional_table_schema]

Или в sqlite3 есть параметры командной строки, которые будут это делать?

(Я написал код для обработки / очистки некоторых текстовых файлов. В конце я могу вызвать преобразование файла CSV в базу данных SQLite.)

Ответы [ 4 ]

7 голосов
/ 07 февраля 2011

Если ваш CSV очень прост (без цитирования, экранирования и т. Д.), Вы можете импортировать его с помощью оболочки sqlite:

http://www.sqlite.org/cvstrac/wiki?p=ImportingFiles

Редактировать: Но, вероятно, это не так, поэтому я думаю, что вам нужно сначала конвертировать файл. Если в вашем CSV-файле нет двойных кавычек ascii или новых строк, вы можете преобразовать его в файл, который sqlite может импортировать с помощью этой команды:

csvtool -u '`' cat csv.csv

(заменив `выше на некоторый символ, которого нет в ваших данных)

Это удаляет кавычки вокруг полей, в которых есть двойные кавычки. csvtool, похоже, не слишком умел бежать. У него нет никаких вариантов обработки экранирования и каких-либо полей, в которых «есть», он просто остается как есть с кавычками.

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

1 голос
/ 18 февраля 2011

Рассмотрим CSV-файл my_input.csv со следующими данными.Обратите внимание, что канал ("|") является разделителем по умолчанию в SQLite.

apple|red
banana|yellow
celery|green

Ниже приведены два метода создания базы данных SQLite my_db.sqlite с указанным выше входным файлом.

Метод1: Вставьте следующий код в командную строку.Или вставьте его в исполняемый файл и запустите файл в bash.

sqlite3 my_db.sqlite "CREATE TABLE my_table(food TEXT, color TEXT)"
sqlite3 my_db.sqlite ".import my_input.csv my_table"

Метод 2: Вставьте следующий код Python в файл и запустите его, используя Python 2.6.6, 2.7.1 или 3.1.3.

import subprocess

args = [
    "sqlite3",
    "my_db.sqlite",
    "CREATE TABLE my_table(food TEXT, color TEXT)",
    ]

subprocess.call(args)

args = [
    "sqlite3",
    "my_db.sqlite",
    ".import my_input.csv my_table",
    ]

subprocess.call(args)
0 голосов
/ 22 ноября 2014

Ознакомьтесь с условиями.https://gitorious.org/termsql https://gitorious.org/termsql/pages/Home

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

Пример:

cat textfile |termsql -o sqlite.db

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

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

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

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

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

termql -i textfile -d ',' -1 -osqlite.db

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

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

0 голосов
/ 29 июня 2011

Очень повезло, используя функцию импорта в Sqlitebrowser http://sqlitebrowser.sourceforge.net/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...