我想将所有用户和角色对象从 Oracle 10g 数据库导出到另一个。我用谷歌搜索,但我不知道如何去做。
首先我使用这个命令:
exp system/root@ [DB_Name] file= [Back_file_name] owner=( [Owner_Name] )
但问题是某些表设置取决于用户权限。因此我还想导出用户对象。
例如,可以使用以下命令导出所有对象:
exp system/root@ [DB_Name] Full=Y file= [Back_file_name]
但是此命令不会为我导出所需的对象。
我只想导出:
这可能吗?
我有一张大表,里面有 BLOB 对象,还有一些从其他表到这个表的引用。我通过从生产中制作 expdp(数据泵),然后在开发/测试主机上匿名数据来为我的应用程序准备开发和测试模式。问题是这个带有 BLOB 的表太大了,将转储文件从生产复制到测试/开发,然后导入它需要很长时间......
是否有任何解决方案可以在表中没有某些列的情况下导出 SCHEMA(可能是一些过滤器,用空的 BLOB 或 NULL 替换所有的 BLOB)?
我还考虑制作一个“仅 BLOB 模式”并将其链接到生产模式,而根本不导出它,但这可能会导致性能问题。
我正在使用 Oracle 11g 并想使用以下语句导出表
C:\>expdp SYS/sys@MYDATABASE DIRECTORY = Mydir DUMPFILE = Customer.dmp LOGFILE = Customer.log TABLES = PERSON.CUSTOMER
Run Code Online (Sandbox Code Playgroud)
在此声明之后 cmd 给出了这个
UDE-28009: operation generated ORACLE error 28009
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
Run Code Online (Sandbox Code Playgroud)
我继续
Username: SYS@SMSPSETUP AS SYSDBA
Password:
Run Code Online (Sandbox Code Playgroud)
最后我得到了
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
Run Code Online (Sandbox Code Playgroud)
我创建了目录“Mydir”,如下所示
SQL>CREATE DIRECTORY Mydir AS 'C:\Users\osman\Desktop\Export';
Run Code Online (Sandbox Code Playgroud)
并从 Windows 文件夹系统中授予每个人对该文件夹的完全权限。
运行以下语句时:
select directory_name, directory_path …Run Code Online (Sandbox Code Playgroud)
我有一个包含类似于以下文档的集合:
{
_id: 'p_123456',
id: 123456,
kind: 'person'
data: [...]
}
Run Code Online (Sandbox Code Playgroud)
id 字段可以包含正整数或负整数。
该集合包含近 1 亿个文档,我有一个 python 脚本,用于处理集合中的数据。
我正在尝试将所有数据导出到 8 个不同的进程中,使用 $mod 运算符按以下方式:
mongoexport -u user -p password -d db -c collection --query "{\$and:[{kind:'person'},{id:{\$mod:[8,\$i]}}]}" | python process.py- 其中 $i 是 0 - 7 之间的数字。
出于某种原因,我注意到当我将这种方法与 8 个进程一起使用时,并非所有数据都被导出到这种特定类型的 8700 万个中的 6500 万个。
如果我{kind:'person'}仅使用查询运行单个 mongoexport 进程,则所有 8700 万个文档都将被导出。
是否有可能运行8个不同proccesses与$mod:[8,0]到$mod:[8,7]是不够的,以导出所有的数据?我在这里错过了什么?
编辑 1:
按照 AdamC 的建议,我运行了以下 map reduce:
var map = function() {
if (this.kind == 'person'){ …Run Code Online (Sandbox Code Playgroud) 我的任务是从生产数据库导出一个大表的内容,并将数据导入远程位置的数据库中。
该表有大约 45,000,000 行。在数据库中使用大约 4 GB 空间。
它的 10 列的类型为 int、datetime 和 varchar(n) <= 255,但一些 varchar 字段包含换行符和批量复制使用的常用字段分隔符。
由于行数,我想导出到 Excel 是没有选择的。使用 SSIS 导出到 Flatfile 是可能的(大约需要 30 分钟),但重新导入不是自动的,因为有些字段会被吐出。
我现在的想法是
我假设插入到具有简单恢复模型的数据库中只会在新数据库上生成最少的日志记录,这种方式是导出数据最快的方式之一,对生产数据库的影响也是最小的。
在大型数据库中,执行了一项活动以上传数据。由于一些错误,重新输入了一个月的数据,这些数据留在了临时保存表中。因此,为了掩盖这一点,我们从另一台机器上恢复的备份中转储了 2 个表。重命名发生错误并从备份中恢复的表。但是当表被恢复时,约束无法加载,因为同名已经在使用中。使用oracle exp/imp 命令导出和导入数据。
我不是 DBA,但在这个问题上需要帮助。
我想将查询结果导出为 xlsx 文件格式。
我知道我们可以将其导出为 csv 文件,但我想将其导出为 xlsx 文件。
像下面这样:
copy(select name_related from hr_employee limit 3) to '/tmp/ABC.xlsx'
delimiter ',' xlsx header;
Run Code Online (Sandbox Code Playgroud) 为了更新数据库(Sybase Adaptive Server Anywhere 8),我从客户端计算机上的一个数据库中获取所有数据并使用
SELECT * FROM tabelName OUTPUT TO 'C:\path' FORMAT ASCII DELIMITED BY ';';
Run Code Online (Sandbox Code Playgroud)
然后我使用这些文件来更新另一个连接到服务器的数据库,方法是制作临时表,检查是否缺少任何内容,然后删除临时表。
INPUT INTO tempTable FROM 'C:\path' FORMAT ASCII DELIMITED BY ';';
INSERT INTO mainTable
SELECT *
FROM tempTable
WHERE id NOT IN (SELECT id FROM mainTable);
DROP TABLE tempTable;
Run Code Online (Sandbox Code Playgroud)
所以我想知道是否有更好的方法来做到这一点,因为两个表需要很长时间来导出和导入数据(尽管它们确实有大量的列和数据,但仍然和大量的数据我的意思是〜100列和约 100,000 行)。这尤其奇怪,因为另一个具有相似数据量的表通过得非常快(尽管它的列确实较少)。需要一段时间的两个表每秒读取约 1000 个数据,而其他表要快得多。
每个客户的笔记本电脑上都有 database.db 文件。他们获取了一些数据并需要提交它但没有连接,因此他们使用自己的 .db 文件并稍后更新服务器上的文件。
获取 SQL 定义可能很困难,因为表是在前一段时间制作的,我不知道如何获取它们。目标数据库是保存所有数据的数据库,而源数据库是未连接且可在需要时离线使用的数据库。
一些建议,提示将不胜感激。
我正在使用脚本和 psql 运行多个查询。我还使用 COPY TO 命令将结果导出到 a.csv。但是,当我想将结果附加到 a.csv 时,这会覆盖文件 a.csv。
是否可以使用 COPY TO 语法,也许我缺少一些参数?还是我应该考虑使用其他工具?
我有一组 12 个表,总共约 400 万行,每年需要移动四次。它们来自的数据库服务器无法直接与它们要移动到的服务器通信。数据必须通过 SFTP 文件传输。
这 12 个表已存在于目标数据库中,但可以根据需要删除或截断。目标数据库将在传输期间处于“实时”使用状态。
在理想的情况下,我希望在源服务器上执行一些脚本,将所有数据放入平面文件中,并在目标服务器上执行另一个脚本,从平面文件加载表。
到目前为止我见过的选项:
使用导入/导出数据向导导出到 CSV(尽管我不确定源数据中包含逗号是否会引起麻烦)。我不喜欢随着时间的推移很容易发生错误,例如导入到错误的表中。
编写 powershell 来导出数据(再次是 CSV 文件,我喜欢一些二进制文件,这样我就不必担心解析问题)。
将数据库备份并恢复到服务器上,然后复制所需的表。这需要复制约 100GB 的备份。这会很慢,但会起作用。
必须有一些工具可以完成此类工作!
@JD -为什么是 SFTP?将数据带入该网络的唯一经批准的方法是 SFTP。关键的公共安全系统,所以他们相当挑剔。 还有其他桌子吗?是的,这只是众多表中的 12 个,整个数据库大约为 100GB。
export ×10
import ×4
oracle ×3
postgresql ×2
sql-server ×2
blob ×1
excel ×1
mongodb ×1
oracle-10g ×1
oracle-11g ×1
psql ×1
sybase ×1