SQL Crea tabella da dati R - String, troncamento a destra

Sep 02 2020

Sto lavorando con Microsoft SQL Azure versione 12, operando su un server RStudio e la libreria DBI. Ho bisogno di creare più tabelle SQL da dataframe con una variabile di lunghezza 4000. Questo può essere fatto come

# Create dataframe
df <- data.frame("myid" = stringi::stri_rand_strings(5, 4000),
                 "mydate" = c(Sys.time(), Sys.time()-1, Sys.time()-2, Sys.time()-3, Sys.time()-4) )

# Create SQL table sschema.ttable
DBI::dbWriteTable(conn = connection,
                    name = DBI::Id(schema = "sschema", table = "ttable"),
                    value = df,
                    overwrite = TRUE)

Ciò non riesce con il seguente errore

Errore in result_insert_dataframe (rs @ ptr, values, batch_rows): nanodbc / nanodbc.cpp: 1617: 00000: [Microsoft] [ODBC Driver 17 for SQL Server] String data, right truncation

ho provato

  • Troncamento delle variabili (non ottimale)
  • Crea tabella> modifica le variabili in modo che siano di formato VARCHAR(6000)invece di VARCHAR(255)> aggiungi dataframe. Ciò si traduce nello stesso errore "Dati stringa, troncamento a destra".

Qualche soluzione su come creare tabelle SQL direttamente dai dataframe R?

Risposte

obruzzi Sep 22 2020 at 22:22

La risposta è definire le variabili e la loro classe di variabili SQL desiderata con field.typescome in

# Create SQL table sschema.ttable
DBI::dbWriteTable(conn = connection,
                    name = DBI::Id(schema = "sschema", table = "ttable"),
                    field.types=c(myid="varchar(6000)"),
                    value = df,
                    overwrite = TRUE)