标签: bulkcopy

在 postgres 中使用 COPY FROM STDIN

我刚开始使用 Postgres,我正在尝试创建一个示例数据库来了解它的功能,环顾四周,我在 pgfoundry.org 中找到了一些脚本。我理解这些命令,因为我之前同时使用了 Oracle 和 MS-SQL,但是我运行的所有脚本在到达“COPY FROM”指令时都返回错误。更准确地说,错误是在应该插入给定表中的第一个元素处抛出。

我已经尝试将脚本作为查询和 pgScripts 运行,但是在这两种方式中,我在 COPY FROM 之后的第一行都收到错误。

我正在使用 pgAdminIII,我使用 StackBuilder 将 PostgreSQL 9.2.4.1 安装为 DB 驱动程序。我是否可能缺少一些阻止我运行此命令的基本配置,或者我只是不明白他们的工作方式?

编辑:
错误是:

ERROR:  syntax error at or near "7"
LINE 5600: 7 4 13 37 2012-03-10 16:41:43.797787 2012-03-10 16:41:43.797...
           ^

********** Error **********

ERROR: syntax error at or near "7"
SQL status: 42601
Char: 140891`
Run Code Online (Sandbox Code Playgroud)

文字在哪里:

COPY action_abilitations (id, group_action_id, partecipation_role_id, group_id, created_at, updated_at) FROM stdin;
7   4   13  37  2012-03-10 16:41:43.797787  2012-03-10 16:41:43.797787`
Run Code Online (Sandbox Code Playgroud)

postgresql pgadmin bulkcopy

16
推荐指数
1
解决办法
5万
查看次数

使用 \copy 时 psql 中的变量替换

我正在使用 psql 命令 \copy 并且我想从 shell 传递一个变量(用于表名),就像我在编写查询脚本时所做的那样。我在 psql 的文档中读到:

该命令的语法类似于 SQL COPY 命令的语法。请注意,因此,特殊的解析规则适用于 \copy 命令。特别是,变量替换规则和反斜杠转义不适用。

这似乎很确定,但是我想知道是否有人知道解决方法?

postgresql psql bulkcopy scripting

9
推荐指数
1
解决办法
3700
查看次数

ORA-01502: 此类索引的索引或分区处于可用状态问题

我的 Oracle 数据库中有一个表,其中

select pkcol, count(*) from myTable group by pkcol having count(*) > 1;
Run Code Online (Sandbox Code Playgroud)

产量

  PKCOL   COUNT(*)
------- ----------
      1          2
      2          2
Run Code Online (Sandbox Code Playgroud)

试图删除重复的行

delete myTable where pkcol = 1;
Run Code Online (Sandbox Code Playgroud)

产量:

ORA-01502: 索引“MYTABLE.PK_MT”或此类索引的分区处于可用状态。

我正在使用 Oracle.DataAccess.Client.OracleBulkCopy 来填充表格。

据我了解,必须检查Oracle PRIMARY KEY 约束的文档。

显然它们没有被检查,正如我通过连续两次执行相同的批量复制而发现的,这些批量复制以所有行中的重复结束。

现在我只在删除所有行后才使用它,并且我正在使用一个具有类似主键的表作为源。因此,我预计不会有任何问题。

但是深深嵌入到我的 MS Build 脚本中,我最终在 2210 行中只有 2 个重复。

我想首先忽略主键是一个明显的错误。不允许批量复制忽略主键约束。

编辑:

同时我发现,在调用bulkcopy之前,通常由某个脚本插入的2个冲突行。问题归结为我的已知问题,bulkcopy 不会在这里检查主键。

oracle-11g bulkcopy

8
推荐指数
2
解决办法
7万
查看次数

BCP 在最后一个“1000 行发送到 SQL Server 后停止。发送的总数:...”

我像这样运行 SQL Server 2005 的批量复制程序 BCP:

bcp mydb.dbo.mytbl in myfile.blk -c -S mysvr -U mylogin -P mypass
Run Code Online (Sandbox Code Playgroud)

它运行并产生如下输出:

Starting copy...
1000 rows sent to SQL Server. Total sent: 1000
...
1000 rows sent to SQL Server. Total sent: 55000
Run Code Online (Sandbox Code Playgroud)

但后来它停止了。光标没有返回提示,我没有收到“...行已复制”。信息。

我尝试查询目标表,我已经可以看到我想要导入的行。

我要终止控制台吗?会回滚吗?

sql-server-2005 bulkcopy

7
推荐指数
1
解决办法
3946
查看次数

将表(及其所有数据)从一台服务器复制到另一台服务器的惯用方法是什么?

我有一个巨大的表,假设有 500,000 行。我想将其(架构和数据)从一台服务器复制到另一台服务器。这不是更新插入或任何类型的更新;这是一次性的直接复制和粘贴。对此的惯用方法是什么?

我试过了:

  • 将备份从一台服务器恢复到另一台服务器。这是不切实际的,因为众所周知,SQL Server 无法从备份中恢复表。它只能恢复数据库。而且我的数据库很大!
  • 使用 SSMS 将表数据编写为 INSERT 语句序列。这是不切实际的,因为插入必须逐行完成,令人痛苦。我怀疑这也会对事务日志造成可怕的影响,但还没有人因此攻击我(我现在正在运行这样的脚本,这将需要几个小时)。

sql-server etl bulkcopy t-sql bulk-insert

7
推荐指数
3
解决办法
1295
查看次数

对于 /copy 命令保留空字符串而不是 null

使用该\copy命令时psql,我有一个包含空值的文件。这些值不是空字符串null,而是始终为空字符串。

我的命令:

\copy agltransact FROM 'dbo_agltransact.csv' with null as '' CSV HEADER;
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

ERROR:  null value in column "apar_id" violates not-null constraint
Run Code Online (Sandbox Code Playgroud)

我有这个数据:

account,amount,apar_id,apar_type
14015,3000000.000,,1
14015,3000000.000,,2
Run Code Online (Sandbox Code Playgroud)

我希望倒数第二列是空字符串。

postgresql bulkcopy

6
推荐指数
1
解决办法
1万
查看次数

将几行从一个数据库复制到另一个数据库

我在两台不同的机器上有两个 PostgreSQL 数据库,网络连接很
我想将几个选定的行从第一个实例复制到第二个实例。不幸的是,单表的full dump太大了。CLI 解决方案就可以了。

postgresql replication bulkcopy

5
推荐指数
1
解决办法
3249
查看次数

System.Data.Entity.Infrastructure.CommitFailedException:C# 多线程和 SQL Server 2012

我们有一个 C# 多线程(100 个线程)程序,它从数据库中读取记录,每个线程获取一条记录(每个线程一个实体框架连接)并更新单个数据库表。

前几分钟(5 分钟)程序正常运行,然后突然所有线程开始抛出以下错误消息.. 约 1 分钟后,一切都会恢复正常阶段.. 我认为 SQL Server 也越来越好了单个数据库表的许多锁(可能正在尝试获取该表上的表锁)或与单个数据库的连接过多并关闭所有连接..

我无法调试这个,有人可以帮助我获取以下信息,

  1. SQL Server 2012 在哪里存储其日志?

  2. 我们可以提高日志级别以查看为什么在保存数据库实体时会抛出异常

  3. 如何获取每个表的锁数,DB 获取的不同类型的锁(表锁、页锁、行锁数等)

调试此问题的任何其他指针。

仅供参考,我在从这个 cmd 得到的 sqlerror 日志中没有发现任何有用的东西:

SELECT SERVERPROPERTY('ErrorLogFileName')

这是异常的堆栈跟踪:

System.Data.Entity.Infrastructure.CommitFailedException: An error was reported while committing a database transaction but it could not be determined whether the transaction succeeded or failed on the database server. See the inner exception and http://go.microsoft.com/fwlink/?LinkId=313468 for more information.

System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the …
Run Code Online (Sandbox Code Playgroud)

sql-server bulkcopy c#

5
推荐指数
1
解决办法
2812
查看次数

SQL Server - 将数据从一个数据库复制到另一个数据库 - 相同的表,需要新的标识值

事情就是这样,我一直在为两个不同的地理区域运行相同的网站副本。该站点现在支持多币种定价,因此我想将两个站点合并在一起。

我需要合并的所有表都是基于身份的,而且愚蠢的是,数据库的每个副本中的匹配表都以相同的数字播种。

有没有办法将数据从一个数据库复制到另一个数据库,同时为复制数据提供新的标识值,这些值也反映在引用表的外键值中?

IE

Account
- Id
- Email
- FirstName
- etc

AccountImage
- Id
- Account_id
- FileName
- etc
Run Code Online (Sandbox Code Playgroud)

等等..

sql-server bulkcopy identity merge

4
推荐指数
1
解决办法
7万
查看次数

在 SQL Server 2008 中截断后在批量插入中重复主键?

我正在使用 SSIS 将数据从我的 SQL Server 2008 prod 数据库转储到平面文件,然后使用批量插入将这些平面文件加载到 SQL Server 2008 dev 数据库中。SSIS 包在批量插入之前运行 TRUNCATE TABLE 语句,但是当我运行它时,我仍然收到此错误:“语句已终止。违反 PRIMARY KEY 约束。无法插入重复键。” 为什么截断后会有重复的键?在批量插入之前,我还需要做些什么来清除主键?

sql-server-2008 ssis bulkcopy

3
推荐指数
1
解决办法
4927
查看次数

批量将数据从一张表移动到另一张表

我有一个表 1800 万条记录我需要将它添加到另一个表(具有相同的结构) 我尝试了导入导出向导,问题是日志变得非常大,最终它关闭了整个服务器,我不得不在中间终止进程。

我想如果我分批进行它会更快,但我不知道该怎么做。

(我不需要旧表,可以删除已复制的记录)

编辑:批量插入阻止所有操作,有没有办法阻止他在这里阻止所有人? 在此处输入图片说明

sql-server-2005 insert bulkcopy

2
推荐指数
1
解决办法
3540
查看次数

psql:id SERIAL PRIMARY KEY 不是以 1 开头?

这是我不明白的地方,有人可以解释一下吗?

我创建一个表

CREATE TABLE cali (id SERIAL PRIMARY KEY,
    ALK_from char,
    ALK_to char,
    AND_from char,
    AND_to char);
Run Code Online (Sandbox Code Playgroud)

然后我只是尝试像这样从 csv 文件中插入一些数据

\COPY cali FROM '/home/.../data/output/id_cali.csv' (FORMAT CSV);
Run Code Online (Sandbox Code Playgroud)

这给了我这个错误:

ERROR:  value "4372840000" is out of range for type integer
CONTEXT:  COPY cali, line 1, column id: "4372840000"
Run Code Online (Sandbox Code Playgroud)

我知道 4372840000 会导致整数溢出。这就是为什么我首先尝试将值作为字符插入。

但我的理解是,这id SERIAL PRIMARY KEY是某种自动增量,为什么值 4372840000 用于列id

该文件看起来像这样

4372840012,4372840013,13,14,
4372840014,4372840014,15,15,
Run Code Online (Sandbox Code Playgroud)

postgresql bulkcopy serialization

1
推荐指数
1
解决办法
4669
查看次数