CSV импорт в Cloud SQL с помощью Cloud Storage Cloud Shell

голоса
1

У меня есть файл CSV на экземпляр Cloud Storage (bd_storage) и нужно сделать импорт в уже созданную таблицу (matriculas) в базе данных Cloud SQL (тест). Дело в том, что возможность импорта UI полей использования по умолчанию разделены запятой ( «„), и мой файл CSV является точкой с запятой (“;»).

Я знаю, что я мог бы использовать текстовый редактор, чтобы изменить все запятые с запятой, но CSV файл, он слишком большой для моего компьютера, чтобы сделать это (это причина, я использую Google Cloud Platform). Как я могу использовать облако Shell, чтобы сделать это?

Вот некоторые примеры того, что я пытался, но безуспешно:

Примечание: Я войти в систему с помощью gcloud sql connect mschiaff --user=root, а затем use testуказать базу данных, где «mschiaff» это экземпляр Cloud SQL.

  1. LOAD DATA LOCAL INFILE 'gs://bd_storage/Matrícula_Ed_Superior_2016_UPLOAD.csv' INTO TABLE `matriculas` CHARACTER SET 'utf8' FIELDS TERMINATED BY ';';
    

    Ошибка:

    2 (HY000): Файл 'гс: /bd_storage/Matrícula_Ed_Superior_2016_UPLOAD.csv' не найден (ERRCODE: 2 Нет такого файла или каталога)

  2. LOAD DATA INFILE 'gs://bd_storage/Matrícula_Ed_Superior_2016_UPLOAD.csv' INTO TABLE `matriculas` CHARACTER SET 'utf8' FIELDS TERMINATED BY ';';
    

    Ошибка:

    ERROR 1045 (28000): Доступ запрещен для пользователя 'корень' @ '%' (используя пароль: ДА)

Это для моей диссертации.

Задан 31/03/2018 в 01:49
источник пользователем
На других языках...                            


1 ответов

голоса
2

У меня есть несколько предложений, и вы можете использовать либо для достижения этой цели.

LOAD DATA LOCAL INFILEне может быть использован, чтобы указать на ведро, потому что он ожидает, что файл будет храниться локально. Таким образом, вам нужна копия CSV, хранящуюся в файловой системе машины, которую вы используете для подключения к экземпляру CloudSQL. Для примера, давайте предположим, что ваш собирается сделать это из облака Shell.

1) Скопируйте CSV из Вашего ведра хранения в вашей домашней директории в облаке Shell:

cd ~

gsutil cp gs://YOU_BUCKET_NAME/file.csv .

1) Подключитесь к экземпляру CloudSQL из облака Shell:

gcloud sql connect CLOUDSQL_INSTANCE_NAME --user root

2) Подключение к правильной базе данных:

use DATABASE_NAME;

3) Импорт CSV в таблицу в базе данных и указать точки с запятой (местоположение файла в этой команде будет искать файл в файловой системе Cloud Shell, как это, где вы подсоединили с):

LOAD DATA LOCAL INFILE '/home/USERNAME/file.csv' INTO TABLE table_name FIELDS TERMINATED BY ';';

Вы должны были успешно импортированы в CSV в таблицу базы данных.

С другой стороны , по отношению к вам не в состоянии открыть файл , чтобы изменить разделитель запятые вместо запятой, вы можете попробовать установки Ковша CSV пребывает в к экземпляру Compute Engine, а затем запустить sedкоманду из экземпляра , чтобы заменить все с запятой с запятыми в файле.

Вы можете установить ведро к экземпляру с помощью FUSE. Инструкции для этого здесь .

После подключения к примеру, вы можете выполнить следующую команду на CSV, чтобы заменить запятую с запятыми.

$ sed -ie "s/;/,/g /path/to/mount/point/file.csv

После того, как вы заменили запятой с запятыми, вы бы тогда иметь возможность импортировать CSV с помощью консоли.

Ответил 31/03/2018 в 13:12
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more