sql >> データベース >  >> RDS >> Mysql

変数を使用してmysqlでOUTFILEを指定できますか

    編集: 変数(定数値のみ)を使用せずにデータ(テーブルなど)をファイルに保存する

    -- folder_path could could be like => c:/users/sami
    -- choose the directory/folder already available in system
    -- and make sure you have access to write the file there
    
    SELECT * INTO OUTFILE 'folder_path/filename.csv'
    FIELDS TERMINATED BY ',' 
    OPTIONALLY ENCLOSED BY '"'
    FROM database.tableName;
    

    現在、変数を使用

    sqlで変数名を使用する必要がある場合は常に、動的sqlが必要です(これは、ストアドプロシージャにのみ適用可能であり、単純なsqlクエリにもトリガーや関数にも適用できません)

    SET @OutputPath := 'Users/jo/Documents'; //or any folder_path
    SET @fullOutputPath := CONCAT(@OutputPath,'/','filename.csv');
    SET @fullOutputPath2 := CONCAT(@OutputPath,'/','filename2.csv');
    
    set @q1 := concat("SELECT * INTO OUTFILE ",@fullOutputPath,
    " FIELDS TERMINATED BY ',' 
    OPTIONALLY ENCLOSED BY '\"'
    FROM database.tableName");
    
    set @q2 := concat("SELECT * INTO OUTFILE ",@fullOutputPath2,
    " FIELDS TERMINATED BY ',' 
    OPTIONALLY ENCLOSED BY '\"'
    FROM database.tableName2");
    
    prepare s1 from @q1;
    execute s1;deallocate prepare s1;
    
    prepare s1 from @q2;
    execute s1;deallocate prepare s1;
    

    両方の'があったので および" クエリにすでに含まれているので、"を使用してクエリを連結しました 元の"をエスケープするために\を使用しました リテラル文字として使用し、連結には使用しないようにするため

    variableの使用について説明しました SQLで。まず、クエリが上部の例のように機能するかどうかを確認する必要があります (変数を使用せずに)

    結論: 上記のクエリが正常に機能する場合は、ストアドプロシージャで使用している場合は、私の指示した動的SQLも機能します。



    1. SQLServerにIPアドレスを格納するためのデータ型

    2. RubyonRails用のUbuntuへのPostgreSQLのインストール

    3. MySQL:SQLクエリの各結果のレコードを挿入するにはどうすればよいですか?

    4. SQLSTATE [22007]:無効な日時形式:1292不正な日時値: '2008-03-30 02:56:12'