8000 GitHub - daranzolin/dputsql: Create 'CREATE TABLE' and 'INSERT INTO...VALUES' SQL statements from R objects
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Create 'CREATE TABLE' and 'INSERT INTO...VALUES' SQL statements from R objects

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md
Notifications You must be signed in to change notification settings

daranzolin/dputsql

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dputsql

The goal of dputsql is to create CREATE TABLE and INSERT INTO SQL statements directly from objects within R. No DBI connection required. Outputs have not been exhaustively tested against numerous engines. Works mostly with SQLite and MySQL formatting.

Installation

You can install the development version of dputsql like so:

remotes::install_
8FAC
github("daranzolin/dputsql")

Example

The simplest use to call dputsql on any dataframe:

library(dputsql)
dputsql(mtcars)
#> CREATE TABLE IF NOT EXISTS x (
#>  mpg numeric,
#>  cyl numeric,
#>  disp numeric,
#>  hp numeric,
#>  drat numeric,
#>  wt numeric,
#>  qsec numeric,
#>  vs numeric,
#>  am numeric,
#>  gear numeric,
#>  carb numeric
#> );
#> 
#> INSERT INTO x (`mpg`, `cyl`, `disp`, `hp`, `drat`, `wt`, `qsec`, `vs`, `am`, `gear`, `carb`) VALUES
#>  (21,6,160,110,3.9,2.62,16.46,0,1,4,4),
#>  (21,6,160,110,3.9,2.875,17.02,0,1,4,4),
#>  (22.8,4,108,93,3.85,2.32,18.61,1,1,4,1),
#>  (21.4,6,258,110,3.08,3.215,19.44,1,0,3,1),
#>  (18.7,8,360,175,3.15,3.44,17.02,0,0,3,2),
#>  (18.1,6,225,105,2.76,3.46,20.22,1,0,3,1),
#>  (14.3,8,360,245,3.21,3.57,15.84,0,0,3,4),
#>  (24.4,4,146.7,62,3.69,3.19,20,1,0,4,2),
#>  (22.8,4,140.8,95,3.92,3.15,22.9,1,0,4,2),
#>  (19.2,6,167.6,123,3.92,3.44,18.3,1,0,4,4),
#>  (17.8,6,167.6,123,3.92,3.44,18.9,1,0,4,4),
#>  (16.4,8,275.8,180,3.07,4.07,17.4,0,0,3,3),
#>  (17.3,8,275.8,180,3.07,3.73,17.6,0,0,3,3),
#>  (15.2,8,275.8,180,3.07,3.78,18,0,0,3,3),
#>  (10.4,8,472,205,2.93,5.25,17.98,0,0,3,4),
#>  (10.4,8,460,215,3,5.424,17.82,0,0,3,4),
#>  (14.7,8,440,230,3.23,5.345,17.42,0,0,3,4),
#>  (32.4,4,78.7,66,4.08,2.2,19.47,1,1,4,1),
#>  (30.4,4,75.7,52,4.93,1.615,18.52,1,1,4,2),
#>  (33.9,4,71.1,65,4.22,1.835,19.9,1,1,4,1),
#>  (21.5,4,120.1,97,3.7,2.465,20.01,1,0,3,1),
#>  (15.5,8,318,150,2.76,3.52,16.87,0,0,3,2),
#>  (15.2,8,304,150,3.15,3.435,17.3,0,0,3,2),
#>  (13.3,8,350,245,3.73,3.84,15.41,0,0,3,4),
#>  (19.2,8,400,175,3.08,3.845,17.05,0,0,3,2),
#>  (27.3,4,79,66,4.08,1.935,18.9,1,1,4,1),
#>  (26,4,120.3,91,4.43,2.14,16.7,0,1,5,2),
#>  (30.4,4,95.1,113,3.77,1.513,16.9,1,1,5,2),
#>  (15.8,8,351,264,4.22,3.17,14.5,0,1,5,4),
#>  (19.7,6,145,175,3.62,2.77,15.5,0,1,5,6),
#>  (15,8,301,335,3.54,3.57,14.6,0,1,5,8),
#>  (21.4,4,121,109,4.11,2.78,18.6,1,1,4,2);

For more control, you can create the table and specify constraints like so:

library(charlatan)
suppressPackageStartupMessages(library(tidyverse))

df <- ch_generate("name", "job", "phone_number", "currency", "color_name") |>
  mutate(id = row_number(), .before = 1) |>
  mutate(varx = sample(1:100, 10))

df |> 
  create_table() |> 
  primary_key("id") |> 
  not_null(c("name", "job")) |> 
  unique_vals(c("phone_number", "job")) |> 
  default_vals(list(currency = "ENG")) |> 
  check_vals(list(varx = "varx > 0")) |> 
  add_insert_statement()
#> CREATE TABLE IF NOT EXISTS df (
#>  id integer PRIMARY KEY,
#>  name text NOT NULL,
#>  job text NOT NULL UNIQUE,
#>  phone_number text UNIQUE,
#>  currency text   DEFAULT ENG,
#>  color_name text,
#>  varx integer  CHECK(varx > 0)
#> );
#> 
#> INSERT INTO df (`id`, `name`, `job`, `phone_number`, `currency`, `color_name`, `varx`) VALUES
#>  (1,'Mr. Darold Trantow IV','Designer, interior/spatial','1-247-551-1720x4089','ZAR','Fuchsia',56),
#>  (2,'Philo Gulgowski DDS','Musician','703.698.8590x0651','SHP','Aqua',53),
#>  (3,'Almyra Runolfsson','Doctor, general practice','429.448.7165x96196','DKK','LightPink',72),
#>  (4,'Dr. Jim Bailey DDS','Bookseller','263-534-7400','NPR','Cornsilk',17),
#>  (5,'Mrs. Kailyn Bode DVM','Nutritional therapist','1-109-195-9233x75019','BZD','CornflowerBlue',35),
#>  (6,'Emilio Volkman','Journalist, magazine','006-968-2239x230','PGK','BlueViolet',67),
#>  (7,'Jeffry Kulas','Veterinary surgeon','1-553-623-5959','AOA','DarkSeaGreen',31),
#>  (8,'Kennth Schulist','Statistician','1-925-014-7928x4579','NGN','Coral',28),
#>  (9,'Eulah Paucek','Call centre manager','253-968-7770x579','OMR','LightSalmon',29),
#>  (10,'Anastacio Gutkowski','Animal technologist','064-719-7466','PAB','MintCream',100);

Write the output to a file, or send it to your clipboard:

dputsql(mtcars) |> 
  write_ddl_file("CREATE.sql")

dputsql(mtcars) |> 
  ddl_to_clipboard()

About

Create 'CREATE TABLE' and 'INSERT INTO...VALUES' SQL statements from R objects

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

0