Как узнать общие имена столбцов из загруженного файла.sql, используя RSQLite

У меня есть файл.sql, который я пытаюсь прочитать в базу данных SQL с помощью пакета R RSQLite. Для ознакомления сначала я посмотрел на набор данных R mtcars:

mydb <- dbConnect(RSQLite::SQLite(), "")
dbWriteTable(mydb, "mtcars", mtcars)
str(mydb)

Структура выглядит следующим образом:

Formal class 'SQLiteConnection' [package "RSQLite"] with 5 slots
  ..@ Id                 :<externalptr> 
  ..@ dbname             : chr ""
  ..@ loadable.extensions: logi TRUE
  ..@ flags              : int 6
  ..@ vfs                : chr ""

Далее я просто читаю пять строк из базы данных:

dbGetQuery (mydb, 'SELECT * FROM mtcars LIMIT 5')

          row_names  mpg cyl disp  hp drat    wt  qsec vs am gear carb
1         Mazda RX4 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
2     Mazda RX4 Wag 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
3        Datsun 710 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
4    Hornet 4 Drive 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
5 Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2

Теперь я могу видеть имена столбцов, и, возможно, меня интересует только hp>200, поэтому я делаю:

dbGetQuery(mydb, 'SELECT * FROM mtcars WHERE hp > 200')
            row_names  mpg cyl disp  hp drat    wt  qsec vs am gear carb
1          Duster 360 14.3   8  360 245 3.21 3.570 15.84  0  0    3    4
2  Cadillac Fleetwood 10.4   8  472 205 2.93 5.250 17.98  0  0    3    4
3 Lincoln Continental 10.4   8  460 215 3.00 5.424 17.82  0  0    3    4
4   Chrysler Imperial 14.7   8  440 230 3.23 5.345 17.42  0  0    3    4
5          Camaro Z28 13.3   8  350 245 3.73 3.840 15.41  0  0    3    4
6      Ford Pantera L 15.8   8  351 264 4.22 3.170 14.50  0  1    5    4
7       Maserati Bora 15.0   8  301 335 3.54 3.570 14.60  0  1    5    8

Теперь я пытаюсь просмотреть интересующие меня данные (больше не mtcars) под названием myData.sql. Мне сказали, что этот файл является общим SQL, и что я могу загружать в любую базу данных, которую я предпочитаю, и что она пришла из PostgreSQL.

Итак, я пытаюсь это, что выводит ту же структуру, что и раньше:

mydb <- dbConnect(RSQLite::SQLite(), "myData.sql")
str(mydb)
Formal class 'SQLiteConnection' [package "RSQLite"] with 5 slots
  ..@ Id                 :<externalptr> 
  ..@ dbname             : chr "myData.sql"
  ..@ loadable.extensions: logi TRUE
  ..@ flags              : int 6
  ..@ vfs                : chr ""

Теперь я хотел бы увидеть, что хранится в myData.sql, в надежде увидеть таблицу данных со столбцами (как для mtcars). Тем не менее, я получаю ошибки при попытке:

dbGetQuery(mydb, 'SELECT * LIMIT 5')
Error in sqliteSendQuery(con, statement, bind.data) : 
  error in statement: no tables specified

а также

dbGetQuery(mydb, 'SELECT * FROM mydb LIMIT 5')
Error in sqliteSendQuery(con, statement, bind.data) : 
  error in statement: no such table: mydb

Я очень не уверен, как начать изучать информацию в myData.sql. Любые советы высоко ценится!

1 ответ

Решение

Обо всем по порядку, mydata.sql это не база данных SQLite, это текстовый файл, содержащий операторы SQL, которые будут создавать и заполнять вашу базу данных.

Я предлагаю вам загрузить браузер данных SQLite, такой как этот, который является мультиплатформенным. Используя этот инструмент, вы можете создать реальную базу данных SQLite. Например, если вы используете sqlitebrowser, перейдите в Файл> Импорт> База данных из файла SQL. Это создаст базу данных, к которой вы можете подключиться изнутри R.

Если вам не нравится браузер данных, который я предложил, есть множество других, которые вы можете попробовать, все они делают более или менее одно и то же. Удачи!

редактировать

Чтобы сделать все из R, вот предложение с использованием RSQLite:

library(RSQLite)
con <- dbConnect(SQLite(), "my_db.sqlite")

Если в файле sql есть все необходимое для создания таблиц, вы можете использовать RSQLite dbSendQuery функция:

fileName <- 'mydata.sql'
sql.query <- readChar(fileName, file.info(fileName)$size)
dbSendQuery(con, sql.query)
dbListTables(con) # to see a list of all created tables

Если у вас возникнут проблемы на шаге dbSendQuery, это тот случай, когда инструменты браузера данных особенно полезны, поскольку сообщения об ошибках, которые вы получите от интерпретатора R, могут не дать вам всех необходимых деталей, чтобы понять, что происходит не так.

Другие вопросы по тегам