我正在导入 7 GBfoobar.sql以恢复本地数据库中的表。
$ mysql -h localhost -u root 'my_data' < foobar.sql
$ mysql --version
/usr/local/mysql/bin/mysql Ver 14.12 Distrib 5.0.96, for apple-darwin9.8.0 (i386) using readline 5.1
Run Code Online (Sandbox Code Playgroud)
我如何监控它的进度?
我一直在做我的SQL Server 2014 Express数据库的备份导入到其他服务器,发现两者之间的文件大小的差异.bacpac和.bak。
为什么一个.bacpac文件比.bak同一个数据库的文件那么小?
感谢您的任何见解!
我正在尝试使用 MySQL Workbench 导入 .sql 文件,但出现此错误:
ERROR 1046 (3D000) at line 28: No database selected
Run Code Online (Sandbox Code Playgroud)
我首先创建了一个与 .sql 文件同名的空数据库,但它不起作用。我还尝试使用 mysql 命令客户端来做到这一点:
mysqldump -u root database > file.sql
Run Code Online (Sandbox Code Playgroud)
但它说我的 SQL 语法有错误。此外,我不知道必须设置file.sql 的路径。
一位客户向我们发送了一个我们需要对其进行测试的 Oracle 数据库。我们不使用 Oracle 或拥有任何内部 Oracle 专业知识。
我们需要设置数据库,以便我们可以连接到它并调试问题。
我全新安装了 Oracle 9(客户端运行的版本)和管理工具。
对于我的一生,我无法让它导入数据。不应该这么复杂。我一定是弄错了。
我试过了:
imp 'sys/password AS SYSDBA' file=c:\database.dmp full=yes log=implog.txt
Run Code Online (Sandbox Code Playgroud)
并得到:
Connected to: Personal Oracle9i Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
Export file created by EXPORT:V09.02.00 via conventional path
Warning: the objects were exported by SYSTEM, not by you
import done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set
. importing SYSTEM's objects into SYS
. importing …Run Code Online (Sandbox Code Playgroud) 我读过一篇文章,提到我们可以通过使用该语句实现每秒 60,000 次插入,该LOAD DATA IN FILE语句从 csv 文件中读取并将数据插入到数据库中。
为什么它应该与普通刀片不同?
编辑:
我通过只调用一个INSERT语句来减少往返:
INSERT INTO tblname
VALUES (NULL,2,'some text here0'),(NULL,2,'some text here1')
,(NULL,2,'some text here2'),(NULL,2,'some text here3')
.....,(NULL,2,'some text here3000');
Run Code Online (Sandbox Code Playgroud)
那这个呢?
我想了解为什么一般的网络安全团队(我接触过的不止一个组织)坚决反对BULK INSERT向应用程序和数据库程序员授予(例如 TSQL)权限?我无法相信“填补磁盘滥用”的借口,除非我遗漏了一些东西,因为最终结果与执行以下操作的应用程序没有什么不同:
for (long i = 0; i < LONG_MAX; ++i)
executeSQL("INSERT INTO table VALUES(...)");
Run Code Online (Sandbox Code Playgroud)
并且INSERT是一种常见的DML命令,任何人都基本写权限才能执行。
为了应用程序的利益,BULK INSERT它更高效、更快,并且使程序员无需解析 SQL 之外的文件。
编辑:我最初在信息安全站点上问这个问题是有原因的 - 不是 DBA 反对使用 BULK INSERT,而是“信息保证”(简称 IA - 网络安全人员)迫使这个问题。我会让这个问题再讨论一两天,但如果批量操作确实绕过约束或触发器,我可以看到这是一个问题。
在将数据导入到 SQL Server 时,人们通常无法考虑导入的字符串字段有多大。我是否可以懒惰地继续对 char 字段定义使用较大的值?如果我花精力寻找合适的 char 字段最大大小,它会对性能和速度产生任何影响吗?
如果重要的话,我有 SQL Server 2016 和 2019。
我正在寻找一种方法来仅根据指定 CSV 的内容生成新的 MySQL 表。我将使用的 CSV 文件具有以下属性;
在 Excel 中,这一切都相当简单,但是在 MySQL 中似乎并非如此(Google 运气不佳)。关于我应该看什么的任何建议?
是否有一种便捷的方法可以使用单个新表空间或与数据来源不同的表空间将模式导入 Oracle 11gR2?
例如,我从 OLDDB 导出了 BLOG_DATA,其中所有用户数据都存储在 USERS 表空间中。
在 NEWDB 上,我想导入 BLOG_DATA 模式,但将用户对象存储在专门为此用户创建的 BLOG_DATA 表空间中。
我创建了 BLOG_DATA 用户,创建了 BLOG_DATA 表空间并将其设置为该用户的默认表空间,并添加了适当的无限配额。
CREATE TABLESPACE blog_data DATAFILE SIZE 1G;
CREATE USER blog_data IDENTIFIED BY secretpassword DEFAULT TABLESPACE blog_data QUOTA UNLIMITED ON blog_data;
GRANT connect,resource TO blog_data
Run Code Online (Sandbox Code Playgroud)
该模式是从 OLDDB 导出的,类似于
exp blog_data/secretpassword@OLDDB file=blog_data.dmp
Run Code Online (Sandbox Code Playgroud)
在阅读了 Phil 在下面的出色回答后,我发现自己想知道:
由于数据除了默认表空间(用户拥有配额的唯一表空间)之外别无他处,这是否会有效地强制 imp 将所有用户对象放在该默认表空间中?
imp blog_data/secretpassword@NEWDB file=blog_data.dmp
Run Code Online (Sandbox Code Playgroud)
这会将整个 blog_data 模式放在 NEWDB 的 blog_data 表空间中吗?有什么理由为什么这不起作用,或者我会遇到某些对象等问题?
更新:
我做了一个快速测试,发现情况确实如此。Imp将对象放置在该用户的默认表空间中,前提是它不能将其放置在原始表空间中(例如,该表空间不存在)。完整说明:http : //www.dolicapax.org/? p= 57
不过,我认为像 Phil 建议的那样使用数据泵可能是首选。
import ×10
mysql ×5
mysqldump ×3
sql-server ×3
bulk ×2
export ×2
oracle ×2
backup ×1
bulk-insert ×1
csv ×1
datatypes ×1
mysql-5.0 ×1
permissions ×1