在 R 中,我与此数据库有 SQL Server 连接:
来自this answer据我了解,这些级别是目录(=数据库)、模式和表
。代码如下:
library(odbc)
library(DBI)
library(RSQlite)
library(dbi)
confull <- odbc::dbConnect(odbc(),
Driver = "SQL Server",
Server = "XXX")
odbcListObjects(confull, schema="schema")
产量:
name type
1 DBAInfo catalog
2 InBluePrism catalog
3 master catalog
4 msdb catalog
5 tempdb catalog
问题:
- 如何提取该数据库的完整结构树,而不仅仅是
目录
? - 如何以编程方式将整个数据库(包括所有表、架构和目录)保存(克隆)到本地
SQLite
表中?
对于第一个问题,我尝试了以下方法:
> all_schemas <- DBI::dbGetQuery(confull, "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA")
> all_schemas
SCHEMA_NAME
1 dbo
2 guest
3 INFORMATION_SCHEMA
4 sys
5 CCAutomation
6 XXXXXX\\xxxAdmin
7 XXXXXX\\z_swmon
8 NT AUTHORITY\\SYSTEM
9 XXXXXX\\z_Backup
10 db_owner
11 db_accessadmin
12 db_securityadmin
13 db_ddladmin
14 db_backupoperator
15 db_datareader
16 db_datawriter
17 db_denydatareader
18 db_denydatawriter
对于第二个问题,我尝试过:
- 在 SQL Server 中生成脚本,但我收到错误,而且我想保持此程序化。
- 但是,为了保存
dbListTables(confull)
给出的所有表,我会丢失有关这些表所属的目录和架构的信息。
编辑:以下link还包含有用的信息
最佳答案
我不知道您拥有哪个版本的 SQL Server。我基于我所拥有的 SQL Server 2008 和 2016。
要使用 CLI 工具,您可以下载 Export2SqlCE.zip
描述:
SQL Server 2005/2008 command line utility to generate a SQL Compact or SQLite compatible script with schema and data (or schema only)
下载后,您可以运行它来提取信息:
Export2SQLCE.exe "Data Source=(local);Initial Catalog=<your_database>;Integrated Security=True" your_database.sql sqlite
关于sql - R:将完整数据库从 SQL Server 复制/克隆到本地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58609661/