データベース管理者

データベースのスキルを向上させ、コミュニティの他の人から学びたいデータベースの専門家向けのQ&A

4
MySQLデータをファイルに出力できません
MySQLテーブルからファイルにデータを出力しようとしていますが、許可エラーが発生しています: $ pwd /home/dotancohen $ mkdir in $ chmod 777 in/ $ mysql -ugs -p mysql> USE someDatabase; mysql> SELECT * FROM data INTO OUTFILE '/home/dotancohen/in/data.csv'; ERROR 1045 (28000): Access denied for user 'gs'@'localhost' (using password: YES) mysql> 問題のディレクトリが777にchmoddedされている場合、MySQLユーザーがファイルを書き込めないのはなぜですか?興味深いことに、/ tmp /にも書き込めません。 編集: DBユーザーが適切なMySQL権限を持っているように見えます: mysql> show grants; +----------------------------------------------------------------------------------+ | Grants for …

2
MySQL CASTとCONVERT
単純な計算(10を追加)に使用するVARCHAR(数値データを含む)があるとします。CAST関数に関するMySQLのドキュメントによれば、CASTまたはCONVERTのいずれかでこれを達成できました。 SELECT (CAST(field1 AS SIGNED)) + 10 FROM myTable; または: SELECT (CONVERT(field1,SIGNED)) + 10 FROM myTable; この意味でのキャストと変換の違いは何ですか?彼らは本当に同じことを達成していますか?
13 mysql 


2
SQL Agent PowerShellコンテキストリファレンス
私の新しい仕事では、各サーバーに複数の名前付きインスタンスがあります。例えば Server1 \ Dev Server1 \ DevIntegrated Server1 \ QA OSを呼び出すSQL PowerShellスクリプトがあり、呼び出しますFoo.exeが、コマンドラインパラメーター(接続文字列)を渡す必要があります。SQLエージェントジョブは各インスタンスに存在し、PowerShellタイプのステップで、現在のコンテキストが何であるかを知る必要があります。つまり、この実行はDevIntegratedで始まりました。 すべてのスクリプトを最初から始めたいとは思いません... $thisInstance = "Dev" ...特に、今後数か月で環境(新しいサーバーと名前付きインスタンス)に移行するときに編集する必要があるためです。 SQLPSを起動すると、Get-Locationまたは実行の結果をスライスしてダイシングすることにより、インスタンスを特定できます。 (Invoke-Sqlcmd -Query "SELECT @@servername AS ServerName" -SuppressProviderContextWarning).ServerName SQLエージェントがPowerShellタイプのジョブを開始すると、C:\ windows \ system32で開始さGet-Locationれ、SQLSERVERコンテキストではないため、ルートは機能しません。そのコンテキストに変更できますが、SQL Serverの「ルート」にいるので、どのインスタンスにいるべきかわかりません。Invoke-Sqlcmdルートを使用しても同じ理由で機能しません(技術的には、デフォルトのインスタンスではありません) 私の知る限り、ジョブログに記録できる基本的な「もの」をすべて列挙しましたが、何も表示されないようです SQLSERVER:\SQL\Server1\DevIntegrated Get-ChildItem Get-Host Get-Location Get-Process Get-PSDrive Get-PSProvider Get-Service Get-TraceSource Get-Variable Get-Process私はそれと、インスタンスをヒットしてspidを一致させることによって物事を一緒にしようとするいくつかのブードゥー教を使用することができるようですが、それは地獄からの血まみれのハックのように聞こえます。私が見逃している基本的なものがあるはずです、誰かが光を当てることができますか? 調査されたPowerShellの代替 他のジョブタイプを使用して調査したところ、満足のいく解像度が得られませんでした。調査の結果、SQL Agentの下にリストされているPowerShellはSQLPSであり、Agentを右クリックしてインスタンスを起動すると、自動的に正しい場所にドロップされました。前述のように違いを知ったのは、ジョブコードに対話型コードを貼り付けたときだけです。 OSのジョブタイプは、どのインスタンスがコマンドシェルにドロップしたかを判別する方法を見つけることができなかったという点で、同じ状態になりました。もちろん、sqlcmdで値を取得できますが@@servername、sqlcmdを開始する接続がわかっていれば、データベースを照会する必要はありません;) TSQLは有効にすればおそらく動作する可能性xp_cmdshellがありますが、オンになっているかどうかはわかりません。それでも、私は動的SQLに夢中になり、PowerShellが提供する表現力とパワーの多くを失います。 少し不格好ですが、最初のステップで変数を定義し、それを後続のステップに渡すことを考えましたが、この記事で複数のジョブステップの処理(BOL) ジョブステップは自己完結型でなければなりません。つまり、ジョブは、ジョブステップ間でブール値、データ、または数値を渡すことはできません。ただし、永続テーブルまたはグローバル一時テーブルを使用して、1つのTransact-SQLジョブステップから別のステップに値を渡すことができます。ファイルを使用して、あるジョブステップから別のジョブステップに実行可能プログラムを実行するジョブステップから値を渡すことができます。 よく知られたファイル/環境変数/レジストリ設定のような一般的なトリックを使用することはできませんFoo.exe。 …

5
Oracleでは、複数の挿入で再利用される変数にsequence.nextvalを保存するにはどうすればよいですか?
いくつかのテーブルにテスト用のデータを入力するスクリプトを書いています。 私は次のようなものを書きたいのですが、どうすればいいのかわかりません(私はOracle 11gです) SET ENABLED_USER_ID = SEQ.NEXTVAL; // PSEUDOCODE SET DISABLED_USER_ID = SEQ.NEXTVAL; // PSEUDOCODE INSERT INTO USERS (ID, USR_NAME) VALUES (:ENABLED_USER_ID, 'ANDREW'); INSERT INTO CAR (CAR_ID, CAR_NAME, USR_ID) VALUES (CARSEQ.NEXTVAL, 'FORD', :ENABLED_USER_ID); INSERT INTO USERS (ID, USR_NAME) VALUES (:DISABLED_USER_ID, 'ANDREW'); INSERT INTO CAR (CAR_ID, CAR_NAME, USR_ID) VALUES (CARSEQ.NEXTVAL, 'FORD', …

2
制約-1つのブール行はtrue、他のすべての行はfalse
列があります: standard BOOLEAN NOT NULL 1つの行をTrueに、その他の行をすべてFalseに強制したいと思います。この制約に応じて、FKやその他のものはありません。私はplpgsqlでそれを達成できることを知っていますが、これは大槌のようです。CHECKまたはUNIQUE制約のようなものを好みます。シンプルなほど良い。 1つの行はTrueでなければなりませんが、すべてFalseにすることはできません(したがって、最初に挿入された行はTrueである必要があります)。 行を更新する必要があります。つまり、すべての行が最初にFalseに設定され、その後に1つの行がTrueに設定される可能性があるため、更新が完了するまで制約を確認するのを待つ必要があります。 そこの間にFKがあるproducts.tax_rate_idとtax_rate.id、それはデフォルトまたは新製品を作成する容易にするために、ユーザが選択可能で、標準税率、とは何の関係もありません。.. 重要な場合はPostgreSQL 9.5。 バックグラウンド 表は税率です。税率の1つがデフォルトです(standardデフォルトはPostgresコマンドであるため)。新しい商品が追加されると、標準の税率が商品に適用されます。がないstandard場合、データベースは推測またはすべての種類の不要なチェックを実行する必要があります。簡単な解決策は、があることを確認することだと思いましたstandard。 上記の「デフォルト」とは、プレゼンテーション層(UI)を意味します。デフォルトの税率を変更するためのユーザーオプションがあります。GUI /ユーザーがtax_rate_idをNULLに設定しないようにするために追加のチェックを追加するか、デフォルトの税率を設定する必要があります。


1
SQL Server / T-SQLは長い文字列を分割するために行継続をサポートしていますか?
私は、1つ以上の非常に長い(時には愚かな長い)文字列を含むSQLスクリプトを使用していることがあります。通常、これらはVARBINARYファイル/アセンブリを表すリテラル/定数ですが、テキストの場合もあります。 本当に長い文字列の主な問題は、一部のテキストエディターでは文字列をうまく処理できないことです。たとえばVARBINARY、CREATE ASSEMBLY [AssemblyName] FROM 0x....ステートメントで使用するリテラルがあり、アセンブリ自体のサイズは1 MBをわずかに超えています。これは、各バイトが16進表記で表されるために2文字を必要とするため、テキストファイルでは200万文字を少し上回ります。 (例0x1F= a 1およびan F)。SQL Server Management Studio(SSMS)はこれをうまく処理せず、その行をスクロールしようとすると数秒間ハングします。実際、一部のバージョン(これがまだ発生するかどうかは不明)では、特定の長さの行が少なくとも1行あるスクリプトを開くと、長い行に関する警告が表示されることもあります。 2番目の問題は、ワードラップを有効にせずにエディターで使用したり、オンラインで投稿したりすると、フォーマットが複雑になることです。ここでの問題は、水平スクロールバーのスライダーが非常に狭く、通常は少しでもそれを移動すると、非超長いテキストがスクロールして見えなくなるということです。 現在、T-SQLはコマンドを改行またはセミコロンで終了しません(SQL Server 2005以降、セミコロンが推奨/推奨されています)。したがって、SQL Serverは各ステートメントを解析する方法を知っているので、いつ終了するかがわかるので、newline/ carriage-return+ だけで区切られた長い行を複数の行に分割するline-feedように見えるのは、不合理に見えません。しかし、これはどちらの場合でも機能しません。 PRINT 'Line1 Line2'; 戻り値([メッセージ]タブ): Line1 Line2 そして、改行はリテラル/定数内にあるので、それは十分に理にかなっています。しかし、これを行うことVARBINARYもできません。 PRINT 0x1234 5678; エラーが出ます。


1
PostgreSQL 9.6の望ましくないネストループとハッシュ結合
PostgreSQL 9.6のクエリ計画に問題があります。私のクエリは次のようになります: SET role plain_user; SELECT properties.* FROM properties JOIN entries_properties ON properties.id = entries_properties.property_id JOIN structures ON structures.id = entries_properties.entry_id WHERE structures."STRUKTURBERICHT" != '' AND properties."COMPOSITION" LIKE 'Mo%' AND ( properties."NAME" LIKE '%VASP-ase-preopt%' OR properties."CALCULATOR_ID" IN (7,22,25) ) AND properties."TYPE_ID" IN (6) 上記で使用したテーブルに対して行レベルのセキュリティを有効にしています。 を使用するset enable_nestloop = Trueと、クエリプランナーはネストループを実行し、合計実行時間は約37秒になります。https://explain.depesz.com/s/59BR をset enable_nestloop …

4
150次元空間での最近傍検索
可能なRDBMSのいずれかを使用してデータベースを作成したい。約150列のテーブルがあります。目的は、いくつかの他のオブジェクトの最近傍探索を実行することです。つまり、これは150次元空間のNNSです。 L1またはL2距離のような明らかな方法を使用しようとしましたが、もちろん、行数が多いテーブルの場合は時間がかかります。また、KDツリー(テストしていないことに注意してください)とPG-Stromを確認しようとしましたが、これらは、多くの次元を持つデータには適していません。 数学の方法(KD-treeなど)または技術的な方法(PG-Stromなど)を使用して、記述された検索の速度をどうにかして向上させることができますか? NNSの速度を改善できるRDBMSを使用するようにします。しかし、MySQLとPostgreSQLは私にとって最も適切なDBMSです。

2
調査、質問、回答に関するデータベース内の冗長な外部キーを処理するための最良のデータモデリングアプローチ
アンケート、質問、回答を保存するための最適なリレーショナルモデリングアプローチに関するアドバイスを探しています。 以下の2つのアプローチのどちらが最適か、またはどちらかに対する代替アプローチを探しています。 私は少なくともこれらのエンティティを持っています: 質問 調査 人 そして、少なくともこれらの関係: 各調査には1つ以上の質問があります。 各質問は0回以上のアンケートで使用できます。 一人一人が0以上の調査を行うことがあります。 ここで問題が発生します。人が行った調査の質問に対する応答をモデル化する方法。 ここに私が検討した2つのアプローチがありますが、どちらも私には非常に良いとは思えません。この図は、問題を説明するために大幅に簡略化されています。 アプローチ1: このアプローチについて私が好きではないこと: survey_person_question_responseテーブルには、調査を参照する2つの異なる列がありますsurvey_question_survey_idし、survey_person_survey_id survey_idこれらの2つの列の1つの行で異なるが参照されていると、エラーになります。survey_questionは、survey_personを担当した人と同じ調査のものである必要があります。これを強制する良い方法がわかりません。 ここで私がしていることは、2つの関係の関係を作っているようです。なんらかの理由でそれは私には間違っていると感じます。 アプローチ2: 同じ値を参照する必要があるアプローチ1からの2つのFKを避けてください... このアプローチについて私が好きではないこと: question_idおよびsurvey_idFKが有効なsurvey_questionペアからのものであるという強制はありません。 survey_idおよびperson_idFKが有効なsurvey_personペアからのものであるという強制はありません。 に関するアドバイス: これらのアプローチの1つが典型的なアプローチかどうか これらのアプローチのいずれかの長所と短所 このデータを完全に整理するためのより良い方法 いただければ幸いです!

4
MySQL InnoDBバッファープールインスタンスの最適数
サーバーの特性 合計システムRAM:8GB(MySQL + MySQL以外のものを実行、つまりMySQL専用ではない) CPUコアの数:6 データベースに約2GBのデータがあります InnoDBバッファープールサイズを4GBに設定しています どちらが良いですか: Innodbバッファープールインスタンスが1に設定されていますか? Innodbバッファープールインスタンスが2(各2GB)に設定されていますか? Innodbバッファープールインスタンスが4(各1GB)に設定されていますか? Innodbバッファープールインスタンスを8(デフォルト設定)に設定 したがって、バッファプールインスタンスと、全体として「そのような大きなInnoDBバッファプールサイズがあると、インスタンスを使用するか、OSスワップが発生する」となる理由を判断する方法がわかりません。

3
pg_restore:[archiver]はファイルヘッダーにマジックストリングを見つけられませんでした
私はPostgreSQL 9.1を使用していて、pg_dump次のコマンドで生成されたバックアップファイルを復元したい: sudo pg_dump -h 127.0.0.1 -U postgres --clean --inserts -E UTF8 -f out.sql database_name このコマンドは、既存のデータベースオブジェクトの削除で始まる有効なsqlファイルを生成し、次にすべてのテーブルを生成し、インジタイズ、シーケンスなどを行い、最後にデータを挿入します。 生成されたバックアップファイルを復元しようとすると、次のようになります(表示目的でのみ改行が追加されます)。 sudo pg_restore -d database_name -h 127.0.0.1 -U postgres --format=c --clean --create out.sql 失敗して出力します: pg_restore: [archiver] did not find magic string in file header その理由は何ですか?


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.