我使用 mysqldump 进行了转储。
mysqldump -u... -p... mydb t1 > mydb_table.sql
Run Code Online (Sandbox Code Playgroud)
然后我将转储导入另一个具有相同表但不同记录的数据库中。
mysql -u...-p... mydb < mydb_tables.sql
Run Code Online (Sandbox Code Playgroud)
导入数据库有从 primary_key 1 到 1000 的记录,导出数据库有 5000 到 10,000..
但是在导入现有记录时,即 1 到 1000 被删除了..
如何??为什么??如果这是默认行为,我可以提供哪些选项来转储以免下次发生。
我们正在开展一个项目,该项目需要每天从 Excel 电子表格中导入数据。数据将从预定义的模板中导入,我们在想什么,首先我们将数据上传到临时表中并执行清理操作(删除不必要的信息,在父表中添加新行并获取它们的FK等)。
我正在尝试使用 oracle imp 实用程序导入给定的转储文件。然而; 我面临以下问题。
C:\Users\AD>imp DB_USER/*****@dev1 file=C:\test\db42312.dmp log=C:\test\import2.log
Import: Release 11.2.0.1.0 - Production on Thu Apr 10 13:37:47 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
IMP-00038: Could not convert to environment character set's handle
IMP-00000: Import terminated unsuccessfully
C:\Users\AD>
Run Code Online (Sandbox Code Playgroud)
我的源数据库为 NLS 查询生成以下结果
SQL> select * from v$nls_parameters where parameter in ('NLS_CHARACTERSET','NLS_LANGUAGE');
PARAMETER …Run Code Online (Sandbox Code Playgroud) 我正在使用导入向导加载文本文件,并且需要整数字段中的空白为空,但只插入零。
如何正确导入?
我有一个查询,它从源数据库 (DatabaseA) 中选择行,并将它们插入到目标数据库 (Database B) 中。数据库之间的排序规则类型不同,无法更改。我需要通过显式指定 varchar 字段的排序规则来解决查询中的排序规则差异。
目前我的查询是这样的:
INSERT INTO DatabaseB.dbo.Users(
Id,
UserNumber,
FirstName,
Surname,
Address1,
Address2,
AddressTown,
AddressCity
)
SELECT
Id,
UserNumber,
FirstName COLLATE SQL_Latin1_General_CI_AS,
Surname COLLATE SQL_Latin1_General_CI_AS,
Address1 COLLATE SQL_Latin1_General_CI_AS,
Address2 COLLATE SQL_Latin1_General_CI_AS,
AddressTown COLLATE SQL_Latin1_General_CI_AS,
AddressCity COLLATE SQL_Latin1_General_CI_AS
FROM DatabaseA.dbo.Users
Run Code Online (Sandbox Code Playgroud)
我的问题是,我可以避免为每个基于字符串的字段键入排序规则类型吗?有没有办法可以一次为整个查询指定排序规则类型?如果这是不可能的,还有其他捷径吗?
我需要将一个大.sql文件(解压时为 8.1GB)导入 PostgreSQL。我尝试使用,\i /path/to/file.sql但它太慢了。
如何加快进口?我需要每周导入这些数据。
在第一个2000行可以在这里找到,而压缩的1点GB转储可以在这里找到
--
-- PostgreSQL database dump
--
-- Dumped from database version 9.5.3
-- Dumped by pg_dump version 9.5.2
SET statement_timeout = 0;
SET lock_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET row_security = off;
--
-- Name: rpo; Type: SCHEMA; Schema: -; Owner: -
--
Run Code Online (Sandbox Code Playgroud)
这是我获取数据的唯一途径。完整的文件有大约。38,000,000 行。如何加快导入速度?
postgresql performance import pg-dump postgresql-performance
我有一个使用 mysqldump 导出的 mysql 8.0。我正在尝试使用 phpmyadmin 将它导入到 Mariadb 10.4 数据库中,两者都是最新版本。每次我这样做时,我都会得到:
Error: Unknown collation utf8mb4_0900_ai_ci
Run Code Online (Sandbox Code Playgroud)
然后我回到 sql 文件并替换utf8mb4_0900_ai_ci为utf8mb4_general_ci,但是它说各种CREATE VIEWsql 语句都有错误。我可以尝试其他快速、无错误的修复吗?
我正在将在 AIX Oracle 9.2 安装上创建的 Oracle 转储填充导入到 Windows 2008 R2 x64 上的 Windows Oracle 10.2.0.4。
我想将文件导入一个干净的数据库。但是,如果我不先创建数据库,就没有什么可创建的。如果我创建数据库,它会抛出很多错误,抱怨缺少用户和表空间,即使是 FULL=Y。
如何将此转储导入到干净的 Oracle 安装中?
导出在系统下运行,导入也运行。索引文件不包含导入用户和表空间的语句,但是当我对原始文件运行完整导入时,IMP 尝试创建TABLESPACES(路径不正确,我必须更改,我知道)但是它不会尝试创建用户,只会抱怨他们不存在。
实际的导出命令用户是:
exp <a_User>/<a_Password> FULL=Y FILE=/PATHHERE/oradata/Export/expdat.dmp log=exp`date + %d%m%y.%H%M%S`.log consistent=y
Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个项目,该项目从平面文件 (csv) 中批量导入数据,大约 18 个不同的文件通过一些存储过程链接到特定的表。
我按照数据加载性能指南中的建议进行了操作。
数据库处于BulkLogged恢复模式以最小化日志记录,当在包含 600000 行的文件上执行以下存储过程时,我收到错误
消息 9002,级别 17,状态 4,过程 SP_Import__DeclarationClearanceHistory_FromCSV,第 34 行
数据库的事务日志已满。要找出无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列
(出于测试目的,我在开始导入之前进行了完整备份)。
看着log_reuse_wait_desc我看到以下内容:
log_reuse_wait_desc检查点。所有其他导入成功导入。
欢迎任何解决此问题的意见。
PROCEDURE [dbo].[SP_Import_DeclarationClearanceHistory_FromCSV]
@FilePath [nvarchar](1000)
AS
BEGIN
-- Creating a Temproary Table for importing the data from csv file.
DBCC TRACEON(610)
CREATE TABLE #DeclarationClearanceHistory
(
[ItemID] [int] IDENTITY(1, 1) NOT NULL ,
[CMSDeclarationID] [bigint] NOT NULL ,
[StatusCode] [nvarchar](10) NOT NULL ,
[SubStatus] [nvarchar](10) NULL ,
[DepartmentCode] [nvarchar](10) …Run Code Online (Sandbox Code Playgroud) 我计划将包含更多 1000 万条记录的 CSV 加载到 PostgreSQL v12.1,其中一列具有“分类”值,因此为其创建枚举类型似乎是一个不错的选择,但它包含 208 个类别。
最短的字段为 2,最长的字段为 11 个字符。所有字段的平均值为 2.4。字符编码是 UTF8,但所有字符都是 ASCII。
我应该使用enumerated或varchar哪种类型?
我丢弃char是因为官方 PostgreSQL 文档说明了有关char、varchar和text 的以下内容:
提示:这三种类型之间没有性能差异,除了使用空白填充类型时增加了存储空间,以及在存储到长度受限列时需要额外的一些 CPU 周期来检查长度。虽然 character(n) 在其他一些数据库系统中具有性能优势,但在 PostgreSQL 中没有这样的优势;事实上 character(n) 通常是三个中最慢的,因为它有额外的存储成本。在大多数情况下,应改用文本或字符变化。
PostgreSQL 中的枚举值在磁盘上占用4 个字节(请参阅 8.7.4. 实现细节)。考虑到这一点和使用enum类型的2.4 平均字符串长度会导致磁盘使用率略高(PostgreSQL 中的短字符串需要一个额外的字节磁盘空间)。我仍然有一种直觉,即使用 enum 是更好的选择,因为它的实现使许多针对它的操作更快。
import ×10
sql-server ×4
bulk ×2
collation ×2
mysqldump ×2
oracle ×2
performance ×2
postgresql ×2
backup ×1
bulk-insert ×1
dump ×1
insert ×1
integer ×1
mariadb ×1
mysql ×1
optimization ×1
pg-dump ×1
phpmyadmin ×1
windows ×1