- Notifications
You must be signed in to change notification settings - Fork1
martinkabe/RSQLS
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Package for fast interactive work with SQL Server
Usage is:
- pulling data from SQL Server
- pushing data into SQL Server
- retrieving basic info about SQL table
- retrieving basic info about SQL database
- allows user to create table, drop table, delere rows in table or create new table on SQL Server
Install package directly from github:
library(devtools)install_github("martinkabe/RSQLS")
Install package from folder content:
- download zip fileRSQLS -> Clone or download -> Download ZIP
library(devtools)install('/RSQLS/package/diR')library(RSQLS)?RSQLS# for basic Help
- Windows OS
- .NET Framework 4.5.1 or newer. How do I check it:link
- R Version R-3.4.2 or newer. Available at:RProject
push_data
- Pushing data into SQL Server.
- Table on SQL Server is automatically created if doesn't exist.
- Data types are automatically estimated (functionality is able to recognize scientific format and convert to appropriate sql data type - int, float, decimal, ... It is also able to distinguish date, datetime format and datetime in ISO format).
push_data(connString,df,sqltabname,append=TRUE,showprogress=FALSE,quotes="auto",separator='|')# If append == TRUE then appending new rows into existing SQL table. If append == FALSE then deletes rows in existing SQL table and appends new records.# Additional parameters such as quotes ("auto", TRUE or FALSE) and separator (e.g. '|', '~', ',') can be defined before StreamReader reads csv generated by data.table::fwrite method.
pull_data
- Pulling data from SQL Server.
pull_data(connString,sqltask,showprogress=FALSE)dpull_data(connString,sqltask,showprogress=FALSE)# pulling data from SQL Server directly into flat file via StreamReader class
send_SQL_task
- Allows user to create table, drop table, delere rows in table or create new table on SQL Server.
send_SQL_task(connectionString,sqltask)
get_DB_info
- Retrieving basic info about SQL database. Be sure you have a permissions for access tosys.dm_db_index_usage_stats: check it withSELECT * FROM sys.dm_db_index_usage_stats. If not, contact your SQL Server admin.
get_DB_info(connectionString)
get_table_info
- Retrieving basic info about SQL table.
get_table_info(connectionString,sqltabname)
- push_data
push_data(connectionString,dataFrame,"dbo.TableName")
- pull_data
pull_data(connectionString,"SELECT * FROM dbo.TableName")
- send_SQL_task
send_SQL_task(connectionString,"CREATE TABLE dbo.TableName (ID int not null, Name varchar(100))")send_SQL_task(connectionString,"DELETE FROM dbo.TableName WHERE ColumnName = 'SomeValue'")send_SQL_task(connectionString,"DROP TABLE dbo.TableName")
- get_DB_info
get_DB_info(connectionString)
- get_table_info
get_table_info(connectionString,"dbo.tableName")
- How to set up connection string
# set_connString(datasource, database, usr, pwd)# If username and password missing or empty Integrated Security=True is used in connection string instead.connectionString<- set_connString(datasource="LAPTOP-USER\\SQLEXPRESS",database="Database_Name")# Connection string with username and password:connectionString<- set_connString(datasource="LAPTOP-USER\\SQLEXPRESS",database="Database_Name",usr="username",pwd="password")
All connections are closed automatically.
Tested on Intel(R) Core(TM) i7-7500 CPU, 2.70GHz 2.90GHz, 12GB RAM, x64 Operating System Windows, SQL Server 2014 Express.
- Pushing data from data.frame/data.table to table on SQL Server (average time in seconds after 3 replications) with mixed data types such as int (mixed with scientific notation), varchar, float, date, datetime in ISO format:
Rows | Columns | DBI::dbWriteTable | RSQLS::push_data | RODBC::sqlSave |
---|---|---|---|---|
1,000,000 | 6 | 16.42 | 15.94 | 319.10 |
5,000,000 | 6 | 78.69 | 66.23 | 1728.53 |
10,000,000 | 6 | 155.50 | 126.73 | NA |
50,000,000 | 6 | 901.39 | 711.55 | NA |
1,000,000 | 21 | 27.03 | 49.81 | NA |
5,000,000 | 21 | 143.25 | 223.25 | NA |
10,000,000 | 21 | 262.83 | 415.94 | NA |
DBI::dbWriteTable and RODBC::sqlSave incorrectly classified scientific notation (1e5, 1.45e2, ...) as varchar type. The same situation with datetime in ISO format was classified as varchar in both cases. RSQLS::push_data correctly classified scientific notation as int or float and datetime in ISO format is correctly datetime data type.
Source code for benchmark is available atlink
- Pulling data from table on SQL Server into data.frame/data.table:
Approximately the same like DBI::dbFetch and many time faster than RODBC::sqlQuery
- Martin Kovarik
This project is licensed under the GPL-2 | GPL-3.
About
Package for interactive work with SQL Server
Topics
Resources
Code of conduct
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.