我有一个Postgres服务器,上面有两个数据库,db1和db2。第二个问题是,db2中有很多表。
我希望保留这两个数据库,但希望“截断”(从db2中删除所有表)。到目前为止,我最好的尝试是:
db2=# \c db1
You are now connected to database "db1" as user "postgres".
db1=# SELECT 'drop table if exists "' || tablename || '" cascade;' as pg_drop FROM pg_tabl
所以我一直在寻找答案,我看到了一些伟大的SQL函数来帮助从我的数据库中删除非ascii字符,但是我想在这里首先发布整个问题/过程,看看我从db2选择到sql的上游是否有一个修复程序。
我正在做的事情:从db2数据库获取数据到SQL
问题:非ascii字符引发问题
过程:--非常简单。我有一个select语句,可以使用打开的查询从db2 linkedserver中选择一组列。
insert into [table](stuff) select (stuff) From Openquery(SSF400,'select stuff from table')
然而,在我的SQL db
我有一个以逗号分隔的.csv文件(位于C:/)。我使用DB2 LOAD实用程序来加载DB2表中CSV文件中的数据。
LOAD CLIENT FROM C:\Users\somepath\FileName.csv of del
MODIFIED BY NOCHARDEL COLDEL, insert into SchemaName.TABLE_NAME;
CSV文件有25行。在该实用程序完成后,我得到了NOCHARDEL的错误消息。我的表已正确加载了25行。现在,当我试图对该模式中的任何表执行insert/update/delete语句时,我将得到以下错误。
查找错误-- DB2数据库错
我拥有对DB2数据库的只读访问权限,我想创建一个只存在于DB2中的“动态/动态”临时表,然后用值填充它,然后将结果与现有的表进行比较。
到目前为止,我正在尝试验证前提,并编译以下查询,但未能使用select语句获得任何信息。
有没有人可以帮助我做错的事情,或者建议我尝试做什么是可能的?(或者一种更好的做事方式)
谢谢,贾斯汀
--Create a table that only exists within the query
DECLARE GLOBAL TEMPORARY TABLE SESSION.TEMPEVENT (EVENT_TYPE INTEGER);
--Insert a v
我从来没有第一次做到这一点,但现在我似乎根本做不到。
在使用数据库的某个地方有一个连接池,所以当应用程序使用数据库时尝试删除数据库应该会出现此错误。问题是,当我发出以下命令时,没有与数据库的连接:
db2 connect to mydatabase
db2 quiesce database immediate force connections
db2 connect reset
db2 drop database mydatabase
这一切都是为了:
SQL1035N The database is currently in use. SQLSTATE=57019
运行此命令不显示连接
我正在尝试在DB2数据库中实现简单的表队列。我需要的是一次选择和删除表中的行,这样多个客户端就不会两次从队列中获得相同的行。我一直在寻找类似的问题,但它们描述了另一个数据库的解决方案,或者描述了相当复杂的解决方案。我只需要一次选择并删除行。
更新:我在web上找到了这样的db2子句,它看起来和我需要的完全一样-- select from delete: example: SELECT * FROM OLD TABLE (DELETE FROM example WHERE example_id = 1)
但我想知道,如果两个并发请求没有得到相同的结果或删除相同的行,这条语句是否是原子的。
我目前正在使用DB2,并计划使用cassandra,因为据我所知,cassandra的读取性能优于关系数据库管理系统。
也许这是一个愚蠢的问题,但我有一个实验,比较DB2和卡桑德拉的阅读性能。
使用500万条记录和相同的表架构进行测试。使用查询SELECT * FROM customer。DB2使用25-30,卡桑德拉使用40-50。
但是查询where条件SELECT * FROM customer WHERE cusId IN (100,200,300,400,500) DB2使用2-3s和Cassandra使用3-5 5ms。
为什么卡桑德拉比DB2快,条件在哪里?所以我无法证明哪个数据