экспортировать пустые таблицы SQLite в csv с заголовками - PullRequest
0 голосов
/ 16 декабря 2018

Когда я экспортирую таблицы из базы данных SQLite в файлы csv с заголовками, пустые таблицы возвращают пустой файл csv.
В этом случае я хотел бы получить файл csv только с заголовком.

Вот пример.

Создайте базу данных с tblA и tblB, где у таблицы A. нет данных.

sqlite3 test.sqlite

CREATE TABLE tblA (
  ID LONG,
  Col01 TEXT
 );

CREATE TABLE tblB (
  ID LONG,
  Col01 TEXT
 );

INSERT INTO tblB (ID, Col01)
VALUES
(1, "AAA"), 
(2, "BBB");

.quit

Экспорт всех таблиц в csv:

# obtain all data tables from database
tables=`sqlite3 test.sqlite "SELECT tbl_name FROM sqlite_master WHERE type='table' and tbl_name not like 'sqlite_%';"`

for i in $tables ; do 
    sqlite3 -header -csv test.sqlite "select * from $i;" > "$i.csv" ;
done

Проверьте содержимое этих CSV-файлов:

[tmp] : head *csv
==> tblA.csv <==

==> tblB.csv <==
ID,Col01
1,AAA
2,BBB

Я хотел бы получить это вместо:

[tmp] : head *csv
==> tblA.csv <==
ID,Col01

==> tblB.csv <==
ID,Col01
1,AAA
2,BBB

1 Ответ

0 голосов
/ 16 декабря 2018

Один из вариантов - использовать pragmatable_info для получения имен столбцов, а затем просто добавить содержимое строк:

for i in $tables ; do
    sqlite3 test.sqlite "pragma table_info($i)" | cut -d '|' -f 2 | paste -s -d, > "$i.csv"
    sqlite3 -csv test.sqlite "select * from $i;" >> "$i.csv"
done

Результат:

$ cat tblA.csv
ID,Col01
$ cat tblB.csv
ID,Col01
1,AAA
2,BBB
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...