关于mysql(5.1.36)中full-joining的问题很多。解决办法当然是联合联合。
我的问题是我有两个像这样的临时表:
CREATE TEMPORARY TABLE wConfs
(
idWorker INT,
confs SMALLINT
) ENGINE=INNODB;
CREATE TEMPORARY TABLE wRejects
(
idWorker INT,
rejects SMALLINT
) ENGINE=INNODB;
JOIN-UNION mix 不能用于全连接临时表,因为它会导致ERROR 1137 (HY000): Can't reopen table。
我的问题是 - 在临时表上实现完全连接的最简单且性能最佳的解决方案是什么?
编辑: JOIN-UNION 组合:
SELECT wc.idWorker, wc.confs, wr.rejects FROM wConfs wc LEFT JOIN wRejects wr
ON (wr.idWorker = wc.idWorker)
UNION
SELECT wc.idWorker, wc.confs, wr.rejects FROM wConfs wc RIGHT JOIN wRejects wr
ON (wr.idWorker = wc.idWorker);
最佳答案
尝试使用来自两个表的不同 idWorker 值创建第三个临时表,然后在您的 JOIN-UNION 组合中使用它,例如-
CREATE TEMPORARY TABLE all_id
SELECT idWorker FROM wConfs UNION SELECT idWorker FROM wRejects;
SELECT t.idWorker, c.confs, r.rejects FROM all_id t
LEFT JOIN wConfs c
ON t.idWorker = c.idWorker
LEFT JOIN wRejects r
ON t.idWorker = r.idWorker;
关于Mysql Full Outer Join 临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10993476/
我很困惑。这是我的代码:require'csv'require'tempfile'f=Tempfile.new('csv','/tmp')f.write'justwannatest'f.closepf.path如果我打开输出路径,它是空的。我认为这是因为每次rubysession退出时,TempFile都会自动从文件系统中删除。但是,我如何确切知道文件何时被删除?因为我想用它在我的Rails应用程序中创建临时文件,我担心文件在使用前是否被删除了。 最佳答案 来自文档:WhenaTempfileobjectisgarbagecol
有没有办法在不打开临时文件的情况下创建它?我必须运行一个可执行文件,将它的输出重定向到一个文件,然后读取并解析它。tempfile创建的所有内容都已打开,这会触发错误,因为文件已锁定。 最佳答案 你也可以使用Dir::TmpnameDir::Tmpname.create('your_application_prefix'){|path|putspath}路径将包含唯一路径参见https://github.com/ruby/ruby/blob/ruby_1_9_3/lib/tmpdir.rb#L116
前段时间我写了aquestion关于在Rails应用程序中使用临时文件。在特殊情况下,我决定使用tempfile如果我还想使用x-sendfile指令(asaparameterinRails2,orasaconfigurationoptioninRails3)以便文件发送由我的Web服务器直接处理,而不是我的Rails应用程序,这会导致问题。所以我想做这样的事情:require'tempfile'deffoo()#createsatemporaryfileintmp/Tempfile.open('prefix',"#{Rails.root}/tmp")do|f|f.print('ate
index.html.erb=form_for:file_upload,:html=>{:multipart=>true}do|f|=f.label:uploaded_file,'Uploadyourfile.'=f.file_field:uploaded_file=f.submit"Loadnewdictionary"模型deffile_uploadfile=Tempfile.new(params[:uploaded_file])begin@contents=fileensurefile.closefile.unlink#deletesthetempfileendend索引defin
这让我发疯。请考虑以下事项:require'open-uri'#setuptempfileextname=File.extnamefile_urlbasename=File.basename(file_url,extname)file=Tempfile.new([basename,extname])#readformURIintotempfileuri=URI.parse(file_url)num_bytes_writen=file.write(uri.read)puts"Wrote#{num_bytes_writen}bytes"#Readingfrommytempfileputs"
我的PassengerRails应用程序出现大约500个错误。查看日志时,乘客似乎无法访问/tmp目录。我已经验证它在那里并且具有对root的RW访问权限,然后尝试了www-data。这是怎么回事?2014-01-1416:01:16.657320624/7fa7c8806700Pool2/SmartSpawner.h:301]:Preloaderfor/var/www/socialrest_homepagestartedonPID20686,listeningonunix:/tmp/passenger.1.0.20618/generation-0/backends/preloader
任何人都可以深入了解基于Cedar的Heroku应用程序可以支持的文件数量和dyno创建的文件的最大大小(单个和全部)的实际限制。 最佳答案 联系了Heroku支持。他们声称在临时文件系统上存储的文件数量或文件大小没有硬性限制。在实践中,如果dyno耗尽了管理文件的可用RAM和/或CPU资源,则dyno将被终止并重新启动,这将有效地破坏文件。 关于ruby-Cedar的临时文件系统在Heroku上的实际限制,我们在StackOverflow上找到一个类似的问题:
我想在另一个目录中运行多个命令(或更容易),然后在它们完成后返回到之前的工作目录。我设想类似于Fabric'swithcd(path):的东西,例如:cd('.git')doFile.unlink('config')end在Rake中是否有这样做的内置方法,或者我应该编写一个接受block的自定义方法等? 最佳答案 它只是内置的Dir#chdir调用:Dir.chdir('.git')doFile.unlink('config')end摘自docs:Ifablockisgiven,itispassedthenameofthenewc
我正在尝试在ruby中从url读取图像并将其保存到Tempfile以供稍后处理。require'open-uri'url='http://upload.wikimedia.org/wikipedia/commons/8/89/Robie_House.jpg'file=Tempfile.new(['temp','.jpg'])stringIo=open(url)#thisispartIamconfusedabouthowtosaveStringIOtotempfile?file.writestringIo这不起作用,导致temp.jpg不是有效图像。不确定如何进行。谢谢
如果我通过Tempfile创建了一个临时文件,除了将它复制到另一个文件之外还有什么方法可以使它成为“永久”文件吗?我想避免在关联的Tempfile实例被垃圾回收或进程终止时删除它。与此相关,有没有一种方法可以利用Tempfile机制(或使用类似的机制)来获取"new"文件名,而无需以该名称创建文件? 最佳答案 不是真的。对于问题本身,请参见:ObjectSpace.undefine_finalizer(tmpfile)Tempfile库使用RubyObjectSpace终结器在垃圾回收时自动删除自身。通过使用上面的行,如果你不删除它